home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / umich / telecomm / fnordadl / fn132src.zoo / ref-man / user-ref.tex < prev   
Encoding:
Text File  |  1991-09-02  |  95.3 KB  |  2,294 lines

  1. @comment Tell Emacs to use -*-texinfo-*- mode
  2. @comment $Id: user-ref.tex,v 2.5 91/09/01 23:04:54 royce Exp $
  3.  
  4. @node User Command Reference, Aide and Co-Sysop Command Reference, Sysop Theory, Top
  5. @chapter User Command Reference
  6. @cindex User commands
  7. @cindex Commands, user
  8.  
  9. This chapter documents in gory detail the basic single-key and multi-key
  10. extended commands that all users have access to.  Most of this information
  11. is present in a more terse format in the online menus and help files, which
  12. you should encourage your users to read often in order to make the best use
  13. of Fnordadel's capabilities.  Don't be surprised, however, when they ignore
  14. all the documentation available to them in favor of doing things inefficiently
  15. or complaining that they can't figure out how things work.  Users are like
  16. that.
  17.  
  18. The chapter will deal will single-key commands first, then multi-key,
  19. and finish with miscellaneous functions.
  20.  
  21. @node Single-key User commands, Multi-key User Commands, User Command Reference, User Command Reference
  22. @section Single-key User Commands
  23. @cindex Single-key user commands
  24. @cindex Commands, single-key user level
  25.  
  26. The Fnordadel single-key commands will allow you and your users to carry out
  27. the majority of your activities on the system.  They do the things people most
  28. often wish done, and have therefore been streamlined so they don't get in the way.
  29. This has the side effect of making them inflexible, but flexibility is what the
  30. multi-key commands (coming up soon) are for.
  31.  
  32. @node Room prompt commands, Pseudo commands, Single-key User commands, Single-key User commands
  33. @subsection Room prompt commands
  34. @cindex Room prompt level single-key commands
  35.  
  36. Users hitting the @samp{?} key at a room prompt will see something like
  37. the following list of commands:
  38.  
  39. @cindex Single-key commands menu
  40. @example
  41. MESSAGES:
  42. [E]nter message
  43. [F]orward read
  44. [N]ew messages
  45. [O]ld messages
  46. [R]everse read
  47. [=]read headers of new messages
  48. [#]message number
  49.  
  50. NAVIGATION:
  51. [B]ackup from this room
  52. [G]oto next room with new messages
  53. [K]nown rooms list
  54. [M]ail room direct
  55. [S]kip room
  56. [U]ngoto from this room
  57. [+]next room (new messages or not)
  58. [-]previous room (new messages or not)
  59. [>]next floor
  60. [<]previous floor
  61.  
  62. OTHERS:
  63. [C]hat with Sysop
  64. [D]ownload file
  65. [H]elp
  66. [I]nformation on this room
  67. [L]ogin (Must do this!)
  68. [T]erminate (Goodbye)
  69. [U]pload file
  70. [Z] Forget this room
  71.  
  72. [.] prefixes extended commands.
  73. [;] prefixes floor commands.
  74. [!] prefixes door commands.
  75. @end example
  76.  
  77. @node Entering and reading messages, Navigation, Room prompt commands, Room prompt commands
  78. @subsubsection Entering and reading messages
  79. @cindex Commands, message reading/entering, single-key
  80. @cindex Message reading commands, single-key
  81. @cindex Message entering commands, single-key
  82.  
  83. You and (more importantly) your users will be spending a lot of time entering
  84. messages, and reading ones posted by other users.  There is one basic way to enter
  85. messages, but several ways to read them, reflecting the differences between old and
  86. new messages in a room.
  87.  
  88. @ftable @code
  89. @item [E]nter message
  90. @cindex Network privileges
  91. @cindex Networked message
  92. This command is one that will be heavily used on your system,
  93. with any luck.  When executed, it will take the user straight into
  94. message entry mode, unless the current room is the @code{Mail>} room.  (In
  95. @code{Mail>}, the system will first ask for the name of a user to whom the
  96. message will be sent, privately.)  If the right combination of user
  97. @dfn{net privileges} and room status exists, the system will make the message
  98. @dfn{networked}, automatically.  @xref{Roomsharing}.
  99.  
  100. An opening help message will be displayed by the system
  101. just before going into the editor, unless the user has set
  102. @cindex Expert mode
  103. @dfn{expert mode} on (@pxref{User Configuration}).  This message can be altered,
  104. but we recommend keeping it a bit on the verbose side, since
  105. the Fnordadel editor is not like very many others out there.  For full
  106. details on the message editor, see @ref{The Message Editor}.
  107.  
  108. @item [F]orward read
  109. This command is infrequently used.  It will cause the system to display
  110. all messages in the current room, starting with the oldest and ending with
  111. the newest.  Users will rarely be concerned with the ancient history that
  112. this command will dredge up, but it's there for the curious.
  113.  
  114. Message display is automatically placed in @samp{more} mode if the current
  115. room is @code{Mail>}, or the user has configured @samp{more} mode to be used
  116. by default.  @xref{More Mode}.
  117.  
  118. @item [N]ew messages
  119. This command is the most frequently used, and will cause the system to
  120. display all new messages in the current room, in the order they were entered.
  121. If the user configuration flag ``show last old message on [N]ew'' is set,
  122. the last old message in the room (if any) will be displayed first,
  123. followed by the new messages in normal fashion.  @xref{User Configuration}.
  124.  
  125. Message display is automatically placed in @samp{more} mode if the current
  126. room is @code{Mail>}, or the user has configured @samp{more} mode to be used
  127. by default.  @xref{More Mode}.
  128.  
  129. @item [O]ld messages
  130. This command is the opposite of @code{[N]ew}, and allows for reading old
  131. messages in the room, in reverse order of entry.  It is often used, since it
  132. will quickly show the discussion leading up to the room's newer messages.
  133.  
  134. Message display is automatically placed in @samp{more} mode if the current
  135. room is @code{Mail>}, or the user has configured @samp{more} mode to be used
  136. by default.  @xref{More Mode}.
  137.  
  138. @item [R]everse read
  139. This command is like @code{[O]ld}, and is the opposite of @code{[F]orward}.
  140. It starts displaying messages with the newest one in the room, and works
  141. backwards from there.
  142.  
  143. Message display is automatically placed in @samp{more} mode if the current
  144. room is @code{Mail>}, or the user has configured @samp{more} mode to be used
  145. by default.  @xref{More Mode}.
  146.  
  147. @item [=]headers of new messages
  148. This command allows users to quickly skim through the new
  149. messages in the current room, viewing only selected header information
  150. from each message (for example, ``91Aug19 7:38 am from: Mr. Neutron'').
  151. The Sysop and Co-Sysops will be shown somewhat more information than will
  152. regular users or Aides (e.g. ``176641 (176641) 91Aug31 3:19 pm: from Not
  153. Quite Cricket'', where the first two numbers are the local and original
  154. message ID numbers, respectively).
  155.  
  156. In the @code{Mail>} room, the "from:" information will be replaced by
  157. "to:" information, for those messages entered by the user seeing the
  158. headers.  Additional information will be shown on the console if
  159. @pindex +debug (citadel)
  160. @code{citadel} is started with the @samp{+debug} option.  Subject lines
  161. will also be shown for net messages originating on STadel systems that
  162. were sent over with subjects.
  163.  
  164. This command never uses @samp{more} mode to display headers.  Also, it is
  165. not of much use in anonymous rooms, where there is no header information
  166. to speak of.
  167.  
  168. @item [#]message number
  169. @cindex Message ID number
  170. This command will probably be rarely used by anybody.  What it does is
  171. allow a user to read a specific message in a room, by supplying its
  172. message ID number.  Message ID numbers can be obtained by Co-Sysops
  173. using @samp{=}, described above, or @samp{.R=}, described in
  174. @ref{Multi-key message reading commands}.
  175. Normal users can only get message ID numbers in anonymous rooms, where
  176. they are a normal part of each message header.
  177. @end ftable
  178. @comment Now finished Entering and reading messages
  179.  
  180. @node Navigation, Other room prompt commands, Entering and reading messages, Room prompt commands
  181. @subsubsection Navigating between rooms
  182. @cindex Commands, navigation, single-key
  183. @cindex Navigation commands, single-key
  184.  
  185. In order to use all of those commands you learned about in the previous
  186. section, you will probably want a way to move about among the rooms on
  187. the system.  Take it from us, the @code{Lobby>} room can get boring real fast.
  188.  
  189. @ftable @code
  190. @item [B]ackup from this room
  191. This command is equivalent to the old @code{[U]ngoto} command,
  192. and allows the user to reverse the effects of the
  193. last few goto and/or skip commands.  @code{[B]ackup} returns the user to the
  194. room he/she left prior to entering the current room.  New messages in the
  195. room exited are not updated in any way; normal use of @code{[G]oto} or
  196. @code{[S]kip} will return the user to these rooms once more.   All messages in
  197. each room re-entered via @code{[B]ackup}, which were new when the user last
  198. entered the room, are re-marked as new.
  199.  
  200. @code{[B]ackup} can be
  201. used several times in succession.  The system currently keeps track of
  202. the 16 most recently-visited rooms for use by @code{[B]ackup}/@code{[U]ngoto}.
  203.  
  204. @item [G]oto next room with new messages
  205. This command will take a user to the next room on the
  206. system that has at least one new message in it, and mark all of the
  207. messages in the room being left as old.  When there are no more new
  208. messages in any room accessible to the user, @code{[G]oto} returns to the
  209. @code{Lobby>} room and will continue to do so however many additional
  210. times it is executed.  For non-experts, a message will be displayed
  211. stating that there are no more new messages.
  212.  
  213. This command is the main one you and your users will employ
  214. to move around the system.  You should make sure that you and they
  215. understand its use.  For an example of improper commands to use for
  216. general movement, see @code{[+]} and @code{[-]}, coming up.  It is
  217. important that @code{[G]oto}
  218. (or its big brother @code{.G(oto)}; @pxref{Multi-key navigation commands})
  219. be used so that messages read in rooms visited are marked by the
  220. system as being old for future visits to the room.  If this is not
  221. done, users will see the same messages over and over again, which
  222. is a waste of their time and system time.
  223.  
  224. @item [K]nown rooms list
  225. This command will display a list of all rooms known to the
  226. user executing it.  For the Sysop, this list will be all existing
  227. rooms.  For a user with Aide or Co-Sysop status, this list will contain
  228. most existing rooms, missing only invitation-only rooms to which the
  229. Aide has not been invited, and those rooms which the Aide or Co-Sysop has used
  230. @code{[Z]forget} to forget about.  For normal users, this list will just
  231. contain regular public rooms, and the odd private rooms to which
  232. they may have been invited.  The list is broken into two groups, the
  233. first of which is rooms containing new messages, and the second of
  234. which is rooms containing no new messages.
  235.  
  236. Private rooms are marked with with an asterisk (@samp{*}), and
  237. will never show up in the @code{[K]nown list} unless the user has access.
  238. Forgotten rooms will also never show up again unless the user
  239. unforgets them.  @xref{Other room prompt commands}.  Finally, if the user is in
  240. floor mode, only rooms on the current floor will be displayed.  To
  241. see all rooms, use the @code{;K(nown floors)} floor command
  242. (@pxref{Multi-key User Floor Commands}),
  243. or the @code{.K(nown)} extended command (@pxref{Multi-key navigation commands}).
  244. @xref{Other multi-key commands}, for the command to view
  245. forgotten rooms, @code{.Z(list-forgotten)}.
  246.  
  247. @item [M]ail room direct
  248. This command is a short-cut method of doing a @code{.S(kip) mail}
  249. command.  It takes the user directly to the @code{Mail>} room, but does not
  250. mark any messages in the current room as ``old''.  This allows the user
  251. to return to the room later and find it just as he/she left it before
  252. heading to @code{Mail>}.
  253.  
  254. @item [S]kip room
  255. This command acts like @code{[G]oto}, taking the user to the next
  256. room with new messages (or the @code{Lobby} room if no new messages
  257. remain).  The difference is that the messages in the room being
  258. departed are not marked by the system as being old, whether the user
  259. has read them or not.  This command permits users to return to an
  260. interesting discussion later, even during another login hours or
  261. days ahead, and again read ``new'' messages to review what was said.
  262.  
  263. Due to the way that Fnordadel keeps track of which messages
  264. in a room are new to a user and which aren't, users who persist in
  265. skipping through rooms, signing off, and coming back later, will
  266. find that Fnordadel slowly starts marking skipped messages as
  267. being old.  As a general rule of thumb, messages that were entered
  268. after a user's previous call, but before the current call, can be
  269. skipped 8 times, after which they will become old.
  270. Makes perfect sense, right?
  271.  
  272. @item [U]ngoto from this room
  273. This command reverses the action of the user's last room
  274. navigation command, such as @code{[G]oto} or @code{[S]kip}, or their multi-key
  275. extended siblings.  See @code{[B]ackup} in this section for more details.
  276.  
  277. @pindex +backup (citadel)
  278. This command will not be available if the Sysop started @code{citadel}
  279. with the command-line option @samp{+backup}.  In such cases, the @code{[U]pload}
  280. command replaces the @code{[U]ngoto} command.  (In either case,
  281. @code{[B]ackup} is always available.)  This difference causes some
  282. confusion, but was implemented because some people would rather have
  283. the old @code{[U]ngoto} than a quick way to upload files.  You pick!
  284.  
  285. @item [+]next room
  286. @itemx [-]previous room
  287. These commands send the user to the next or previous room on the
  288. system, @emph{whether there are new messages in it or not}.  If the user is
  289. operating in floor mode, these commands will not leave the current
  290. floor, but will loop from the last room on the floor back to the
  291. first one, or vice versa, as appropriate.
  292.  
  293. These commands operate like @code{[S]kip}, in that they do not mark any
  294. messages as old in the room being left behind.  For this reason, you
  295. may wish to delete these commands from the
  296. list of basic commands produced by hitting @samp{?}.  We have observed
  297. inexperienced users falling into the trap of using them for
  298. all their room navigation, rather than @code{[G]oto}.  Thus they read the
  299. same messages again and again each time they call, wasting a lot of time.
  300.  
  301. @item [>]next floor
  302. @itemx [<]previous floor
  303. These commands take the user to the first room of the next or previous
  304. floor on the system, if the user is in floor mode.  If the user is
  305. on the last floor, @code{[>]next} will take him/her to the first floor;
  306. similarly, the @code{[<]previous} command from the first floor will wrap
  307. around to the last floor.
  308. No messages are flagged as old in the room left behind.  @xref{Floors},
  309. for a look at floors.
  310. @end ftable
  311. @comment Now done Navigating between rooms
  312.  
  313. @node Other room prompt commands,  , Navigation, Room prompt commands
  314. @subsubsection Other commands
  315.  
  316. There remain several single-key commands that don't fit the above
  317. two command categories (message processing and room navigation).  Don't
  318. forget about them, though, because several are essential to everybody's
  319. life, liberty and happiness.
  320.  
  321. @ftable @code
  322. @item [C]hat with Sysop
  323. Users wanna talk with the Sysop?  This is the command.
  324. Users calling for a chat will either be told that the Sysop is
  325. being paged, or if he or she has turned the chat option off
  326. (see @code{[C]hat toggle} in @ref{Sysop Special Functions}),
  327. they will see a message the contents of which live
  328. in the @file{nochat.blb} file in the system's help file directory,
  329. @vindex helpdir
  330. @code{#helpdir}.  If a user has Aide status, the chat flag can be over-ridden
  331. by a special Aide command.  @xref{The .A(ide) command}.
  332. If the Sysop does not answer the chat call, a @samp{*} flag is put on
  333. the status line to let him know somebody wanted a chat.  @xref{Status line}.
  334.  
  335. @item [D]ownload file
  336. This is a quickie synonym for the extended command
  337. @code{.R(ead) <protocol> F(ile)}, which sends files to a user by his/her
  338. default transfer protocol (@pxref{User Configuration}).  Fnordadel will
  339. prompt for the names of the files to send.  Note that this only works in
  340. directory rooms that permit user downloads, of course.
  341. @xref{Multi-key file reading commands}, and @ref{File Transfers}.
  342.  
  343. @item [H]elp
  344. Okay, so you've given up.  You're tired of Fnordadel
  345. assuming you want to be treated like an adult, and instead want to
  346. be coddled in a mammoth maze of menu-driven madness!  Well, this command won't
  347. quite do that, but it's close.  When you hit @samp{H}, you'll get a brief
  348. listing of basic, single-key commands in a somewhat narrative
  349. format.  This is simply a text file called @file{dohelp.hlp} in
  350. @vindex helpdir
  351. @code{#helpdir},
  352. and like any of the @samp{.hlp}, @samp{.blb} or @samp{.mnu} files in that directory, the
  353. Sysop may modify it to suit his or her tastes using any text editor
  354. capable of saving @sc{ascii} text.
  355.  
  356. Note that you may branch out to other help screens.  At
  357. the bottom of the @code{[H]elp} list, you are told that you can either hit
  358. a carriage-return (which will take you back to the room prompt) or
  359. type one of several letters to take you to other, more detailed help
  360. screens.  Most of the other screens work in the same fashion.
  361.  
  362. Note also that any help file may be @code{[P]aused} just like any
  363. other text being output from the system.  Finally, we realise that
  364. you, as Sysop, have a mind like a steel trap and won't ever need
  365. any of this help stuff.  When we say ``you'' above, we of course mean
  366. other users.
  367.  
  368. @item [I]nformation on this room
  369. This command allows users to view an optional information file,
  370. which (presumably) tells them something about the current room, followed
  371. by the total and new numbers of messages in the room.  The
  372. info file is formatted exactly like a normal message, and has as its header
  373. the file's date and time of last modification, and the user name of the
  374. modifier.  @xref{The .A(ide) command}, for the Aide commands that deal with
  375. room information files.  Room information is optional for each room.
  376. There is one information file per room, and they all live in
  377. @vindex roomdir
  378. @code{#roomdir}
  379. with the room data files.
  380.  
  381. Aides and Co-Sysops will also be shown some extra information about the
  382. room, duplicating the details that the @code{[V]iew} command displays
  383. during room editing.
  384.  
  385. @item [L]ogin
  386. This command is how all users get onto the system in the
  387. first place.  Depending on the setting of the
  388. @vindex getname
  389. @code{#getname} parameter
  390. in @file{ctdlcnfg.sys}, when @code{[L]ogin} is executed the system will either
  391. prompt for a password or for both a user name and a password.
  392.  
  393. This second possibility is popularly known as ``paranoid
  394. mode'' and is used by Sysops who wish to discourage people from
  395. attempting to guess passwords at random.  It's much easier to guess
  396. a password which could get you into any user's account than it is
  397. to guess a password of a particular user's account.
  398.  
  399. @item [T]erminate
  400. This command logs users off the system properly.  As with
  401. many commands, it will ask for confirmation.  There are, of course,
  402. many ways for a user to leave the system improperly.  For a look
  403. at them, see @ref{The call-log}.
  404.  
  405. @item [U]pload file
  406. This is a quickie synonym for the extended command
  407. @code{.E(nter) <protocol> F(ile)},
  408. which lets a user upload a file by his/her default
  409. transfer protocol (@pxref{User Configuration}).
  410. Fnordadel will prompt for the name of the file and a
  411. short description.  Naturally this only works in directory rooms that
  412. permit user uploads.
  413. @xref{Multi-key file entry commands}, and @ref{File Transfers},
  414. for more information.
  415.  
  416. If the user executing the
  417. command is not an expert, the system will prompt for a file name;
  418. otherwise, no prompt is given, and the system will wait for the file
  419. name to be typed on the command line.
  420.  
  421. @pindex +backup (citadel)
  422. This command will only be available if you started @code{citadel}
  423. with the command-line option @samp{+backup}.  If you didn't, the @code{[U]ngoto}
  424. command replaces @code{[U]pload}.  (In either case,
  425. @code{[B]ackup} is always available.)  This difference causes some
  426. confusion, but was implemented because some people would rather have
  427. @code{[U]ngoto} than a quick way to upload files.  You be the judge.
  428.  
  429. @item [Z]Forget this room
  430. @cindex Forget a room
  431. If users find that the conversation in a particular room
  432. fills them with ennui, they can @dfn{forget} the room simply by using
  433. this command at the room's main prompt.  The room will no longer show
  434. up in their list of known rooms, and they will no longer be taken to it
  435. by any single-key navigation command, for example @code{[G]oto}.  In this
  436. manner, users may tailor the sometimes vast numbers of different
  437. discussions on a Fnordadel down to a smaller number that actually
  438. interest them.
  439.  
  440. @cindex Unforget a room
  441. In order to remember, or @dfn{unforget}, this room later on, if this is ever
  442. desired, users can execute the multi-key command @code{.G(oto) @var{roomname}},
  443. discussed in @ref{Multi-key navigation commands},
  444. where @var{roomname} is the full and complete
  445. name of the room to which they wish restored access.  This works fine for
  446. both normal public rooms and hidden rooms, but if a user forgets an
  447. invitation-only private room, this method will not regain access to
  448. that room.  @xref{Rooms}.
  449.  
  450. Note:  The Sysop can not forget rooms.
  451.  
  452. @item [.] prefixes multi-key commands
  453. @itemx [;] prefixes floor commands
  454. We'll get to these in the next main sections, @ref{Multi-key User Commands},
  455. and @ref{Multi-key User Floor Commands}.
  456.  
  457. @item [!] prefixes door commands
  458. @xref{Doors}, for the complete scoop.
  459. @end ftable
  460. @comment Now done Other commands
  461.  
  462. @node Pseudo commands,  , Room prompt commands, Single-key User commands
  463. @subsection Pseudo commands
  464. @cindex Pseudo commands
  465. @cindex Commands, output control
  466. @cindex Output control keys
  467.  
  468. There are four single-key pseudo-commands that users will see
  469. and use all the time.  They control output from Fnordadel whenever
  470. something is being displayed.  The commands are:
  471.  
  472. @table @code
  473. @item [J]ump
  474. @findex [J]ump (output control)
  475. This control command causes the system to jump to the
  476. start of the next paragraph in whatever is being displayed.
  477. This is a good way to skip ahead through long-winded messages
  478. to find a part later in the text.
  479.  
  480. @item [P]ause
  481. @findex [P]ause (output control)
  482. This control command is used all the time.  It pauses
  483. output, and waits of the user to press another key to restart
  484. things.  Certain keys pressed while output is paused allow for
  485. message deletion, movement, or journalling.  @xref{Deleting Messages},
  486. @ref{Aide message deletion and movement}, and @ref{Message journalling}.
  487.  
  488. The @samp{^S} (Control-S) key will do the same thing as @code{[P]ause}.
  489.  
  490. @item [N]ext
  491. @findex [N]ext (output control)
  492. This command will cause the system to abort the display
  493. of the current item and start the next one.  The only situation
  494. in which this command makes sense is while reading messages in
  495. a room.
  496.  
  497. The @samp{^O} (Control-O) key will do the same thing as @code{[N]ext}.
  498.  
  499. @item [S]top
  500. @findex [S]top (output control)
  501. This command will halt output from the system and
  502. return the user to a command prompt.  In some cases when
  503. Fnordadel is displaying important information, the @code{[S]top}
  504. command will be ignored to ensure the user sees what is being
  505. sent.
  506. @end table
  507.  
  508. @node Multi-key User Commands, Multi-key User Floor Commands, Single-key User commands, User Command Reference
  509. @section Multi-key User Commands
  510. @cindex Commands, multi-key user
  511. @cindex Multi-key user commands
  512.  
  513. The multi-key commands seem endless, but there really is a finite number of
  514. them.  It's the options that are endless.  Before explaining in
  515. more detail, the best piece of general advice is ``don't be afraid to
  516. experiment with these commands''.  You can't hurt Fnordadel much, and you'll
  517. be getting hands-on training to boot.  Besides, you should be making backups
  518. anyway.
  519.  
  520. Multi-key commands start with a mode character.  For normal extended commands,
  521. the character to use is @samp{.}.  Executing the @samp{.?} command will produce
  522. a list of multi-key commands something like the following:
  523.  
  524. @cindex Extended commands menu
  525. @cindex Multi-key commands menu
  526. @example
  527. .B(ackup) @var{roomname}
  528.  
  529. .E(nter) ?
  530.  
  531. .E(nter) M(essage)
  532. .E(nter) N(et-message)
  533. .E(nter) L(ocal-message)
  534.  
  535. .E(nter) [XYWV] [MNL]
  536.          X(modem)
  537.          Y(modem)
  538.          W(xmodem)
  539.          V(anilla)
  540.  
  541. .E(nter) H(eld-message)
  542.  
  543. .E(nter) F(ile) @var{file.ext}
  544.  
  545. .E(nter) [XYWV] F(ile) @var{file.ext}
  546.          X(modem)
  547.          Y(modem)
  548.          W(xmodem)
  549.          V(anilla)
  550.  
  551. .E(nter) C(onfiguration)
  552. .E(nter) O(ption) @var{configoption}
  553. .E(nter) P(assword)
  554. .E(nter) R(oom)
  555.  
  556. .G(oto) ?
  557. .G(oto) @var{roomname}
  558.  
  559. .H(elp) ?
  560. .H(elp) @var{topic}
  561.  
  562. .K(nown) ?
  563. .K(nown) [DHNP] <CR>
  564. .K(nown) [DHNP] R(ooms) @var{roomname}
  565.          D(irectory rooms)
  566.          H(idden rooms)
  567.          N(etwork rooms)
  568.          P(ublic rooms)
  569.  
  570. .R(ead) ?
  571.  
  572. .R(ead) A(ll)
  573. .R(ead) G(lobal)
  574. .R(ead) N(ew)
  575. .R(ead) O(ld)
  576. .R(ead) R(everse)
  577.  
  578. .R(ead) [MUL+-~=XYWVC] [AGNOR]
  579.         M(ore)
  580.         U(ser) @var{username}
  581.         L(ocal)
  582.         + (After) @var{date}
  583.         - (Before) @var{date}
  584.         ~(not)
  585.         =(headers)
  586.         X(modem)
  587.         Y(modem)
  588.         W(xmodem)
  589.         V(anilla)
  590.         C(apture)
  591.  
  592. .R(ead) D(irectory) @var{*.doc}
  593. .R(ead) E(xtended directory) @var{*.foo}
  594.  
  595. .R(ead) [M+-XYWVC] [DE] @var{files.ext}
  596.         M(ore)
  597.         + (After) @var{date}
  598.         - (Before) @var{date}
  599.         X(modem)
  600.         Y(modem)
  601.         W(xmodem)
  602.         V(anilla)
  603.         C(apture)
  604.  
  605. .R(ead) F(ile) @var{foobar.txt}
  606.  
  607. .R(ead) [+-XYWVCT] [FB] @var{files.ext}
  608.         + (After) @var{date}
  609.         - (Before) @var{date}
  610.         X(modem)
  611.         Y(modem)
  612.         W(xmodem)
  613.         V(anilla)
  614.         C(apture)
  615.         T(ext)
  616.  
  617. .R(ead) H(eader) @var{foo.arc}
  618. .R(ead) I(nvited)
  619. .R(ead) S(tatus)
  620. .R(ead) # (message number)
  621.  
  622. .S(kip) ?
  623. .S(kip) @var{roomname}
  624.  
  625. .T(erminate) ?
  626. .T(erminate) S(tay)
  627. .T(erminate) Q(uit-also)
  628. .T(erminate) P(unt)
  629. .T(erminate) Y(es)
  630.  
  631. .U(ngoto) @var{roomname}
  632. or
  633. .U(pload) @var{file.ext}
  634.  
  635. .Z (list forgotten)
  636. @end example
  637.  
  638. The above list of commands will now be dealt with in similar logical groupings as
  639. used in the single-key commands section.  (Due to their respective size, we will
  640. split the @samp{enter} and @samp{read} commands into their own sections.)
  641.  
  642. Note:  There are some additional extended commands that are documented in
  643. later chapters, as they are not accessible by normal users.  Also, there are
  644. some extended commands that are not documented at all, for a variety of
  645. reasons other than because we forgot.  In the case of these latter commands, they are
  646. usually identical to existing single-key commands, and we don't wish to give
  647. people an excuse to be less efficient than they should be.  Also, such commands might
  648. be removed at any time, as the whim takes us, so don't build your life around
  649. them.
  650.  
  651. @node Multi-key enter commands, Multi-key read commands, Multi-key User Commands, Multi-key User Commands
  652. @subsection Enter commands
  653. @cindex Commands, enter, multi-key
  654. @cindex Enter commands, multi-key
  655. @cindex Multi-key enter commands
  656.  
  657. Just as with single-key commands, there are extended commands for entering
  658. information to the system.  However, much greater flexibility is possible with the
  659. extended @code{.E(nter)} command.  One reason is that it can be used to enter a
  660. variety of things, including messages, files, user configuration settings, and
  661. more.  Another reason is that many of these things can be entered either
  662. interactively or via a transfer protocol.
  663.  
  664. @node Multi-key message entry commands, Multi-key file entry commands, Multi-key enter commands, Multi-key enter commands
  665. @subsubsection Entering messages
  666. @cindex Entering messages
  667. @cindex Message entry commands, multi-key
  668. @cindex Multi-key message entry commands
  669.  
  670. There are several ways to enter messages, based on the type of message to be
  671. entered and how it is to be entered.
  672.  
  673. @ftable @code
  674. @item .E(nter) M(essage)
  675. This is the basic multi-key message entry command.  @xref{The Message Editor},
  676. for details on the message editor.  The command allows
  677. normal entry of a message in a
  678. room.  It is identical to the single-key @code{[E]nter} command.  The system
  679. may make the message a networked message, if the right combination of
  680. user net privileges and room status exists; otherwise, the message will
  681. be non-networked.
  682.  
  683. @item .E(nter) N(et-message)
  684. @cindex Networked message
  685. This form of the command allows a user to
  686. attempt to explicitly enter a @dfn{networked}
  687. message.  There are several reasons why the system may not permit this.
  688. Firstly, the current room might not be a shared room.  Network
  689. messages can't be used in non-networked rooms.  (Note that @code{Mail>} is
  690. considered to be a networked room even though the Sysop can't
  691. explicitly share it with any other nodes.)
  692.  
  693. Secondly, the user may not have the requisite privileges in a
  694. given room to enter a networked message.  In normal shared rooms, the
  695. user must have been given network privileges by the Sysop; see
  696. @ref{User Status Commands}.
  697. (This can be done automatically using the
  698. @vindex allnet
  699. @code{#allnet} parameter in
  700. @file{ctdlcnfg.sys}; see @file{ctdlcnfg.doc} for details.)
  701.  
  702. Finally, in the @code{Mail>} room, the user must have enough long-distance
  703. credits (supplied by the Sysop, of course) if the destination system
  704. is designated long-distance by the Sysop.  Normally, l-d credits are
  705. not used;
  706. however, to control l-d mail traffic the Sysop may define l-d net costs in
  707. @file{ctdlcnfg.sys}
  708. (see @file{ctdlcnfg.doc}, parameters
  709. @vindex ld-cost
  710. @code{#ld-cost} and
  711. @vindex hub-cost
  712. @code{#hub-cost}),
  713. and assign credits to users (@pxref{User Status Commands}).
  714.  
  715. @item .E(nter) L(ocal-message)
  716. @cindex Local (non-networked) message
  717. The @code{.E(nter) L(ocal-message)} command allows a user to force a message
  718. to be @dfn{local}, i.e. non-networked, in rooms that the Sysop has set up to
  719. automatically ``nettify'' all messages entered.  Such auto-net rooms are
  720. convenient, but now and then users may wish to post comments that
  721. should not be
  722. sent across the net.  This is especially true of users who have Aide,
  723. Co-Sysop or Sysop status, since Fnordadel treats all networked rooms as if they
  724. were auto-netted, for these classes of users.
  725.  
  726. @item .E(nter) [XYWV] [MNL]
  727. This class of commands gives users the ability to compose
  728. their messages on their own systems using any editor or word processor
  729. that can save text to an @sc{ascii} file, and then upload the results to
  730. Fnordadel as a message.  When Fnordadel has received the entire
  731. transmission, it places the user into the message editor to allow for
  732. any needed touch-up work.
  733.  
  734. The individual command types (@code{M(essage)}, @code{N(et-message)}
  735. and @code{L(ocal-message)})
  736. are subject to the same restrictions described in
  737. @ref{Multi-key message entry commands}.
  738. Here are the currently available transfer protocols:
  739.  
  740. @table @code
  741. @findex X(modem) [.E(nter) modifier]
  742. @findex Y(modem) [.E(nter) modifier]
  743. @findex W(xmodem) [.E(nter) modifier]
  744. @findex V(anilla) [.E(nter) modifier]
  745. @item X(modem)
  746. @itemx Y(modem)
  747. @itemx W(xmodem)
  748. @itemx V(anilla)
  749. The first two protocols will be used almost exclusively.  For
  750. details about the various protocols, see
  751. @ref{Protocols, , File Transfer Protocols}.  Note that Wxmodem
  752. may not be available, since we may have disabled the code we
  753. inherited due to problems we haven't had inclination to fix.
  754. @end table
  755.  
  756. @item .E(nter) H(eld-message)
  757. This command allows a user to continue editing a message that
  758. was previously saved in the held buffer by the @code{[H]old} command in the
  759. message editor (@pxref{The Message Editor}).  A message held in one room may
  760. be continued in another, reheld and restarted later, and so on.  The
  761. Sysop can set the @file{ctdlcnfg.sys}
  762. @vindex keephold
  763. @code{#keephold} parameter to make Fnordadel
  764. preserve users' held messages between login sessions.  If this is done,
  765. held messages are stored in files in the directory
  766. @vindex holddir
  767. @code{#holddir} specified
  768. in @file{ctdlcnfg.sys}.  A user may have only one held message at a time.
  769. Users may also continue held
  770. messages from the @samp{more} prompt (@pxref{More Mode}).
  771. @end ftable
  772. @comment Now done Entering messages
  773.  
  774. @node Multi-key file entry commands, Other multi-key entry commands, Multi-key message entry commands, Multi-key enter commands
  775. @subsubsection Entering files
  776. @cindex Entering files
  777. @cindex Multi-key file entry commands
  778. @cindex Commands, file entry, multi-key
  779.  
  780. There are fewer @code{.E(nter)} commands related to files than messages,
  781. mainly because the system does not distinguish between different types of
  782. files.  A file is a file is a file.
  783.  
  784. @table @code
  785. @item .E(nter) F(ile) @var{file.ext}
  786. @findex .E(nter) F(ile)
  787. This is the basic file uploading command, and allows users to
  788. transfer any sort of file to your system, providing that they have
  789. access to a directory room that permits user uploads.  The transfer
  790. protocol used defaults to the user's defined default protocol
  791. (@pxref{User Configuration} for the command to set the default).
  792. The system will
  793. prompt for the name of the file to upload, and a short description.
  794. @xref{File Transfers}, for more.
  795.  
  796. As usual, if the user executing the
  797. command is not an expert, the system will prompt for a file name;
  798. otherwise, no prompt is given, and the system will wait for the file
  799. name to be typed on the command line.
  800.  
  801. @item .E(nter) [XYWV] F(ile) @var{file.ext}
  802. @findex .E(nter) [XYWV] F(ile)
  803. This modification of the above command allows the user to
  804. specify a file transfer protocol to use in uploading a file.
  805. As always, if the user executing the
  806. command is not an expert, the system will prompt for a file name;
  807. otherwise, no prompt is given, and the system will wait for the file
  808. name to be typed on the command line.  Here are the supported
  809. protocols:
  810.  
  811. @table @code
  812. @findex X(modem) [.E(nter) modifier]
  813. @findex Y(modem) [.E(nter) modifier]
  814. @findex W(xmodem) [.E(nter) modifier]
  815. @findex V(anilla) [.E(nter) modifier]
  816. @item X(modem)
  817. @itemx Y(modem)
  818. @itemx W(xmodem)
  819. @itemx V(anilla)
  820. The first two protocols will be used almost exclusively.  For
  821. details about the various protocols, see
  822. @ref{Protocols, , File Transfer Protocols}.  For other details on
  823. file transfers, @pxref{File Transfers}.  Note that Wxmodem
  824. may not be available, since we may have disabled the code we
  825. inherited due to problems we haven't had inclination to fix.
  826. @end table
  827. @end table
  828. @comment Now done Entering files
  829.  
  830. @node Other multi-key entry commands,  , Multi-key file entry commands, Multi-key enter commands
  831. @subsubsection Entering other information
  832.  
  833. There are several @code{.E(nter)} commands that have nothing to do with
  834. messages or files.  However, they involve sending information to the system,
  835. so the Citadel Gods decreed that they be @code{.E(nter)} commands.
  836.  
  837. @table @code
  838. @item .E(nter) ?
  839. @findex .E(nter) ?
  840. This command simply displays one of Fnordadel's many help
  841. files, which contains a brief list of the many @code{.E(nter)} options.
  842.  
  843. @item .E(nter) C(onfiguration)
  844. @findex .E(nter) C(onfiguration)
  845. This command calls up a menu that allows a user to change the
  846. configuration data that he/she supplied when first logging onto the
  847. system.  All user options may be altered in this menu except for name
  848. and password.  Note that some of the options in this menu are not
  849. settable by the user when he/she first logs in, if the ``Are you an
  850. expert?'' question is answered with @samp{no}.  In such cases, some of the
  851. more esoteric options are given default values by the system, and then
  852. left well enough alone until the user stumbles across them in @samp{.EC}.
  853. @xref{User Configuration}.
  854.  
  855. @item .E(nter) O(ption) @var{configoption}
  856. @findex .E(nter) O(ption)
  857. This command is a short-cut way for a user to change one of
  858. his/her configuration options.  It avoids going through the menu in
  859. the @code{.E(nter) C(onfiguration)} command.  The @var{configoption} option can
  860. be any command available in the @samp{.EC} menu, and will produce the same
  861. prompt and take the same answers.
  862.  
  863. @item .E(nter) P(assword)
  864. @findex .E(nter) P(assword)
  865. This command allows a user to change his/her password.  We
  866. recommend that all users periodically change their passwords to guard
  867. against so-called ``hackers''.
  868.  
  869. @item .E(nter) R(oom)
  870. @findex .E(nter) R(oom)
  871. This command allows a user to create a new room on the system.
  872. A parameter in @file{ctdlcnfg.sys} (see
  873. @vindex all-room
  874. @code{#all-room} in @file{ctdlcnfg.doc}) permits
  875. the Sysop to allow this command to be used either by all users, or
  876. only by users with Aide or Co-Sysop status.  If a normal user executes
  877. this command, he/she will be able to create only normal rooms and
  878. hidden rooms.  Invitation-only status, directory status, and all other
  879. attributes can only be set by an Aide or Co-Sysop.  Or the Sysop itself,
  880. of course.
  881.  
  882. If there is no space for the new room (see the
  883. @vindex maxrooms
  884. @code{#maxrooms}
  885. parameter in @file{ctdlcnfg.doc}), it will look for any temporary non-shared
  886. rooms that
  887. are currently empty.  If one such room is found, Fnordadel will
  888. purge it to make way for the room being created.  If no killable rooms
  889. are found, the system will display a message to the effect that no
  890. space is available, and abort the operation.
  891.  
  892. This command also gives users a chance to create the initial room info file
  893. using the message editor.  The contents of this file are shown to users when
  894. they use the @code{[I]nfo} command.  @xref{Other room prompt commands}.  The
  895. Sysop can define a @file{ctdlcnfg.sys} parameter called
  896. @vindex infook
  897. @code{#infook}, which controls whether all users or only Aides and Co-Sysops
  898. are allowed to create info files.  Another parameter called
  899. @vindex infomax
  900. @code{#infomax} controls the maximum size of info files.
  901. @end table
  902. @comment Now done Entering other information
  903.  
  904. @node Multi-key read commands, Multi-key navigation commands, Multi-key enter commands, Multi-key User Commands
  905. @subsection Read commands
  906. @cindex Commands, reading, multi-key
  907. @cindex Multi-key read commands
  908.  
  909. As with the @code{.E(nter)} command detailed above, there is also a very flexible
  910. @code{.R(ead)} command.  It permits users to read messages, download files, and
  911. display other kinds of information, with an even larger array of options than
  912. available with @code{.E(nter)}.
  913.  
  914. @node Multi-key message reading commands, Multi-key file reading commands, Multi-key read commands, Multi-key read commands
  915. @subsubsection Reading messages
  916. @cindex Commands, message reading, multi-key
  917. @cindex Multi-key message reading commands
  918. @cindex Reading messages
  919.  
  920. Since Citadels were originally highly discussion-oriented, the oldest and most
  921. used @code{.R(ead)} commands deal with messages.  A large collection of options
  922. allows users to read messages in strange and wonderful ways.
  923.  
  924. @ftable @code
  925. @item .R(ead) A(ll)
  926. The @code{.R(ead) A(ll)} command is the same as the single-key
  927. @code{[F]orward} command,
  928. and demonstrates one of the few instances in which the single-key
  929. commands aren't consistent with the extended commands.  @samp{.RF} is for the
  930. @code{.R(ead) F(ile)} command, so @samp{A} for @code{A(ll)} was used instead.  Oh, by the
  931. way, this command displays all messages in the current room, starting
  932. with the oldest.
  933.  
  934. @item .R(ead) G(lobal)
  935. The @code{.R(ead) G(lobal)} command does not have a single-key
  936. equivalent.  This command will cause the system to
  937. display all new messages in all rooms on the system, returning
  938. the user to the @code{Lobby>} room when done.
  939.  
  940. This command is not frequently used, but can be beneficial for
  941. the odd person who likes to peruse messages at great length.  Using the
  942. message downloading capabilities of Fnordadel (described in @ref{Multi-key
  943. message reading commands}, and in @ref{File Transfers}),
  944. in conjunction with @code{G(lobal)} allows a user
  945. to quickly transfer all new messages to his/her own system, where they
  946. can be read at leisure without monopolizing the @sc{bbs}.
  947.  
  948. Of course, lurkers (users who always read but never post) can
  949. use the @code{G(lobal)} command, too, since it allows them to see everything
  950. with a minimum of key-strokes expended.  We tend to discourage such
  951. activity whenever possible, on philosophical grounds.
  952.  
  953. @item .R(ead) N(ew)
  954. The @code{.R(ead) N(ew)} command is the extended equivalent of the
  955. single-key @code{[N]ew} command, and displays all new messages in the room,
  956. from oldest to newest.
  957.  
  958. @item .R(ead) O(ld)
  959. The @code{.R(ead) O(ld)} command does the same as the single-key
  960. @code{[O]ld} command, and displays only old, previously-read messages in
  961. reverse order, from newest to oldest.
  962.  
  963. @item .R(ead) R(everse)
  964. The @code{.R(ead) R(everse)} command acts just like the
  965. single-key @code{[R]everse} command, and displays all messages in the room in
  966. reverse order, from newest to oldest.
  967.  
  968. @item .R(ead) [MUL+-~=XYWVC] [AGNOR]
  969. The previous five basic message-oriented @code{.R(ead)} commands can
  970. be supplemented with various options to make life easier and/or more
  971. interesting.  These options can frequently be used in conjunction with
  972. each other to produce compounded effects that literally boggle the
  973. imagination.  Well, our imaginations, anyway.  Here, then, are
  974. the currently available modifiers:
  975.  
  976. @table @code
  977. @item M(ore)
  978. @findex M(ore) [.R(ead) modifier]
  979. The @code{M(ore)} modifier is a relatively recent addition to
  980. Citadel, which historically has been anti-menu in philosophy.
  981. We guess it's true that one can have too much of a good thing,
  982. even if it's philosophy.
  983.  
  984. What @code{M(ore)} does for users is cause Fnordadel to display
  985. messages in @samp{more} mode.  The system pauses after each message
  986. displayed by any of the reading commands, to permit the digestion of
  987. what was just read, and/or the entry of a few other commands, without
  988. breaking out of the message-reading sequence.  Hitting @samp{?} at the
  989. @samp{more cmd:} prompt should produce a list that looks like this:
  990.  
  991. @cindex More menu
  992. @example
  993. [A]- this message again
  994. [B]ackup to previous message
  995. [D]elete this message
  996. [H]- continue held message
  997. [N]ext message (also <SPACE>, <CR>)
  998. [R]eply to this message
  999. e[X]it message reader (also [Q]uit, [S]top)
  1000. @end example
  1001.  
  1002. For details on this option, see @ref{More Mode}.
  1003.  
  1004. @item U(ser) @var{username}
  1005. @findex U(ser) [.R(ead) modifier]
  1006. This @code{.R(ead)} modifier allows for the reading of just
  1007. those messages from a specific user.  If in the @code{Mail>} room,
  1008. messages both from and to the specified user will be shown.
  1009. After all modifiers have been supplied and one of the message-reading
  1010. commands (@samp{[AGNOR]}) is chosen, Fnordadel will ask for a
  1011. user name.
  1012.  
  1013. Entering a full or partial user name here will then
  1014. limit message display as described.  If the name given does
  1015. not match the author (or recipient, in the case of the @code{Mail>}
  1016. room) of any message, nothing will be displayed.
  1017.  
  1018. This modifier
  1019. may be inverted when used in conjunction with the @samp{~} modifier;
  1020. see @ref{Multi-key read commands}.  In such cases, it will show all messages
  1021. @emph{not} to or from the specified user.
  1022.  
  1023. @item L(ocal)
  1024. @findex L(ocal) [.R(ead) modifier]
  1025. This option is usable only in a shared room (remember
  1026. that @code{Mail>} is shared).  It limits messages being displayed to
  1027. those that were entered on this system, ignoring all messages
  1028. that may have come in over the network from other systems.
  1029.  
  1030. This modifier
  1031. may be inverted when used in conjunction with the @samp{~} modifier;
  1032. see @ref{Multi-key read commands}.  In such cases, it will show all messages
  1033. @emph{not} originating on this system (i.e. all those that came in
  1034. over the network).
  1035.  
  1036. @item + (After) @var{date}
  1037. @findex +(After) [.R(ead) modifier]
  1038. This option, and the following one, allow the user to
  1039. qualify the system's message display by giving date boundaries.
  1040. With the @code{+ (After)} option, the user may specify that messages
  1041. must be after a given date, which will be prompted for after all
  1042. other options are entered and a message-reading command
  1043. (@samp{[AGNOR]}) is given.
  1044.  
  1045. The format of the date is the same as all
  1046. dates displayed by Fnordadel, @samp{YYMMMDD}, where @samp{YY} is the year,
  1047. @samp{MMM} is the English abbreviation of the month, and @samp{DD} is the
  1048. day.  Example:  @samp{90Oct05}.  The year, @samp{YY}, may be ommitted, and
  1049. the current year will be assumed.  If the entire date is omitted (i.e.,
  1050. the user just hits @samp{<CR>} in response to the prompt), the system
  1051. will use the date and time of last call.
  1052.  
  1053. @code{+ (After)} and @code{- (Before)} can be used together.  See the next
  1054. section for details.
  1055.  
  1056. @item - (Before) @var{date}
  1057. @findex -(Before) [.R(ead) modifier]
  1058. This option is the reverse of the above option, and
  1059. specifies that all messages be prior to a given date.  The year can
  1060. be omitted, to indicate the current year should be used.  If the
  1061. entire date is omitted (i.e., the user just hits @samp{<CR>} in
  1062. response to the prompt), the system will use the date and time of last call.
  1063.  
  1064. @code{+ (After)} and @code{- (Before)} can be used together,
  1065. if desired, to specify a range of dates.  The range is inclusive.  So,
  1066. for example, entering @samp{.R+-A} and answering @samp{91Jan10} for the
  1067. ``after'' date and @samp{91Jan15} for the ``before'' date, would net
  1068. you all messages entered on or after 91Jan10, and on or before 91Jan15.
  1069. The system does no checking to ensure that the two dates form a sensible
  1070. range.  Thus, if you reversed the two dates in the above example, the
  1071. system would search long and hard and find nothing.
  1072.  
  1073. @item ~(not)
  1074. @findex ~(not) [.R(ead) modifier]
  1075. This modifier works on certain other modifiers and
  1076. commands, and allows the user to negate or invert the normal
  1077. meaning of the resulting command.  @code{~(not)} currently has an
  1078. effect when followed by @code{M(ore)}, @code{U(user)}, @code{L(ocal)}
  1079. or @code{I(nvited)}
  1080. (with the @code{.R(ead) I(nvited)} command, described later).  When
  1081. followed by itself, it does what you'd expect, and negates
  1082. itself.  Useful, eh wot?
  1083.  
  1084. The @code{~(not) M(ore)} sequence is useful in @code{Mail>}, or if
  1085. a user has
  1086. the @samp{more} prompt enabled by default in his/her configuration,
  1087. and wishes to read some messages without using @samp{more}.  The
  1088. @code{~(not) U(ser)} sequence will display all messages @emph{except}
  1089. those to or from the specified user.  The @code{~(not) L(ocal)}
  1090. sequence, usable only in a shared room, will display only
  1091. messages that did not originate on this system.  The
  1092. @code{~(not) I(nvited)} sequence, usable only in a private room,
  1093. will list all users who do not have access to the room.
  1094.  
  1095. @item =(headers)
  1096. @findex =(headers) [.R(ead) modifier]
  1097. This modifier is similar in purpose to the single-key
  1098. @code{[=]new headers} command.
  1099. It tells Fnordadel to
  1100. display only the headers of the messages that are shown.  Users
  1101. with Aide, Co-Sysop or Sysop status will see somewhat different header
  1102. information than will regular users.  For a full description, see
  1103. @ref{Entering and reading messages}.
  1104.  
  1105. @findex X(modem) [.R(ead) modifier]
  1106. @findex Y(modem) [.R(ead) modifier]
  1107. @findex W(xmodem) [.R(ead) modifier]
  1108. @findex V(anilla) [.R(ead) modifier]
  1109. @item X(modem)
  1110. @itemx Y(modem)
  1111. @itemx W(xmodem)
  1112. @itemx V(anilla)
  1113. The above four options shouldn't be surprising in what
  1114. they mean.  They permit users to download a selection of
  1115. messages (optionally qualified by other @code{.R(ead)} modifiers)
  1116. using a standard file transfer protocol.  The resulting text
  1117. file can be read or edited on the user's own system.  For
  1118. details about the various protocols, see
  1119. @ref{Protocols, , File Transfer Protocols}.  Note that Wxmodem
  1120. may not be available, since we may have disabled the code we
  1121. inherited due to problems we haven't had inclination to fix.
  1122.  
  1123. @item C(apture)
  1124. @findex C(apture) [.R(ead) modifier]
  1125. This @code{.R(ead)} option permits users to capture the
  1126. selected messages into the held buffer, rather than display
  1127. them on the screen.  This feature is generally used to capture
  1128. a single message into the buffer, for purposes of quoting at
  1129. some length from it.
  1130. @end table
  1131.  
  1132. @item .R(ead) # (message number)
  1133. @cindex Message ID number
  1134. This command will probably be rarely used by anybody.  What it does is
  1135. allow a user to read a specific message in a room, by supplying its
  1136. message ID number.  Message ID numbers can be obtained by Co-Sysops
  1137. using @samp{.R=}, described in this section.  Normal users can only
  1138. get message ID numbers in anonymous rooms, where they are a normal part
  1139. of each message header.
  1140. @end ftable
  1141. @comment Now done Reading messages
  1142.  
  1143. @node Multi-key file reading commands, Other multi-key read commands, Multi-key message reading commands, Multi-key read commands
  1144. @subsubsection Reading files
  1145. @cindex Multi-key file reading commands
  1146. @cindex Reading files
  1147. @cindex Downloading files
  1148. @cindex File reading commands
  1149. @cindex Commands, file reading, multi-key
  1150.  
  1151. As time went by, and more people started using Citadels as general-purpose
  1152. @sc{bbs}es, the need for file-transfer capabilities grew.  Thus a number of
  1153. file reading commands were added (and continue to be expanded upon), which
  1154. more or less parallel appropriate message reading options.
  1155.  
  1156. @table @code
  1157. @item .R(ead) D(irectory) @var{*.doc}
  1158. @findex .R(ead) D(irectory)
  1159. This command enables users to get a list of files in a
  1160. directory room.  The list is sorted alphabetically by file name, and
  1161. the size of each file is listed.  After all files have been shown, the
  1162. total number of bytes taken by them will be displayed.  Users on the
  1163. system console will also be shown the total bytes free in the room,
  1164. and what directory the room is linked to on the storage device.
  1165.  
  1166. A single file name or mask containing wild-card characters
  1167. may be supplied with the command.  The system will search the directory
  1168. for all matches to the value entered, if any, and display them.  The
  1169. normal wild-cards (@samp{*} to match any sequence of characters, and @samp{?} to
  1170. match any single character) may be used.  If the user executing the
  1171. command is not an expert, the system will prompt for the file name;
  1172. otherwise, no prompt is given, and the system will wait for the file
  1173. name to be typed on the command line.
  1174.  
  1175. @item .R(ead) E(xtended directory) @var{*.foo}
  1176. @findex .R(ead) E(xtended directory)
  1177. This command is like the one above, with the difference that a
  1178. description will be displayed for each file, if there is one defined.
  1179. The system will automatically request a short description from users
  1180. who upload files to the system, but if files are put into the room in
  1181. any other fashion, the Sysop will need to manually create descriptions
  1182. for them in the directory's @code{.fdr} file.  @xref{File Directories}.
  1183.  
  1184. Again, a single file name or mask containing wild-cards
  1185. may be supplied with the command.  The system will search the directory
  1186. for all matches to the value entered, if any, and display them.  The
  1187. normal wild-cards (@samp{*} to match any sequence of characters, and @samp{?} to
  1188. match any single character) may be used.  If the user executing the
  1189. command is not an expert, the system will prompt for the file name;
  1190. otherwise, no prompt is given, and the system will wait for the file
  1191. name to be typed on the command line.
  1192.  
  1193. @item .R(ead) [M+-XYWVC] [DE] @var{files.ext}
  1194. @findex .R(ead) [M+-XYWVC] [DE]
  1195. The directory commands described above have some options to
  1196. improve their usefulness.  As above, if the user executing the
  1197. command is not an expert, the system will prompt for the file name;
  1198. otherwise, no prompt is given, and the system will wait for the file
  1199. name to be typed on the command line.
  1200.  
  1201. @table @code
  1202. @item M(ore)
  1203. @findex M(ore) [.R(ead) modifier]
  1204. This facility, a recent addition, gives to file
  1205. operations some of the same functionality that @code{M(ore)} has
  1206. given to message operations in the past.  We call the use of
  1207. @code{M(ore)} with file transfers the @dfn{file browser}, since it lets
  1208. users browse through directories of files, one at a time,
  1209. and do various things with them.  Hitting @samp{?} at the
  1210. @code{Browse cmd:} prompt should display a list like this:
  1211.  
  1212. @cindex Browser menu
  1213. @example
  1214. [A]- view this entry again
  1215. [B]ackup to previous file
  1216. [C]lear batch list
  1217. [H]eader listing of ARC, LZH, ZOO file
  1218. [M]ark this file for batch transfer
  1219. [N]ext file (also <SPACE>, <CR>)
  1220. [U]nmark a file
  1221. [V]iew batch list
  1222. e[X]it the browser (also [Q]uit, [S]top)
  1223. @end example
  1224.  
  1225. @xref{The File Browser}, for a full treatment.
  1226.  
  1227. @item + (After) @var{date}
  1228. @findex +(After) [.R(ead) modifier]
  1229. This option will cause the system to request a date
  1230. from the user.  Only those files with date stamps after the
  1231. given date will be shown.  The date format is the same as used
  1232. by the rest of Fnordadel, @samp{YYMMMDD}.  The year, @samp{YY}, may be
  1233. ommitted.  @xref{Multi-key message reading commands}, for other details.
  1234.  
  1235. @code{+ (After)} and @code{- (Before)} can be used together.  See the next
  1236. section for details.
  1237.  
  1238. @item - (Before) @var{date}
  1239. @findex -(Before) [.R(ead) modifier]
  1240. This option, if you can't guess, will cause the system
  1241. to display only those files with date stamps prior to the
  1242. user's given date.  @xref{Multi-key message reading commands}.
  1243.  
  1244. @code{+ (After)} and @code{- (Before)} can be used together,
  1245. if desired, to specify a range of dates.  The range is inclusive.  So,
  1246. for example, entering @samp{.R+-A} and answering @samp{91Jan10} for the
  1247. ``after'' date and @samp{91Jan15} for the ``before'' date, would net
  1248. you a list of all files uploaded on or after 91Jan10, and on or before 91Jan15.
  1249. The system does no checking to ensure that the two dates form a sensible
  1250. range.  Thus, if you reversed the two dates in the above example, the
  1251. system would search long and hard and find nothing.
  1252.  
  1253. @findex X(modem) [.R(ead) modifier]
  1254. @findex Y(modem) [.R(ead) modifier]
  1255. @findex W(xmodem) [.R(ead) modifier]
  1256. @findex V(anilla) [.R(ead) modifier]
  1257. @item X(modem)
  1258. @itemx Y(modem)
  1259. @itemx W(xmodem)
  1260. @itemx V(anilla)
  1261. The above four options are the standard transfer protocols you've
  1262. no doubt come to love.  Their use with @samp{.RD} or @samp{.RE}
  1263. permit users to download a directory listing
  1264. (optionally qualified by other @code{.R(ead)} modifiers)
  1265. using a standard file transfer protocol.  The resulting text
  1266. file can be examined on the user's own system at his/her leisure.
  1267. For details about the various protocols, see
  1268. @ref{Protocols, , File Transfer Protocols}.  Note that Wxmodem
  1269. may not be available, since we may have disabled the code we
  1270. inherited due to problems we haven't had inclination to fix.
  1271.  
  1272. @item C(apture)
  1273. @findex C(apture) [.R(ead) modifier]
  1274. This @code{.R(ead)} option permits users to capture the
  1275. selected directory listing into their held message buffers.
  1276. It is probably best suited for use in shared rooms where you wish
  1277. to let other systems know about files on-line on your system.
  1278. Users actually calling your system can do a @samp{.RE} command
  1279. themselves, so why enter a redundant message?
  1280. @end table
  1281.  
  1282. @item .R(ead) F(ile) @var{foobar.txt}
  1283. @findex .R(ead) F(ile)
  1284. This command, usable only in a directory room, will cause
  1285. Fnordadel to display the contents of the specified file on the user's
  1286. terminal.  Hopefully, the user will only do this for text files, since
  1287. binary or compressed files are not very interesting to read.  No
  1288. formatting to the user's configured screen width is done, so if the
  1289. text file is formatted with lines longer than the user's terminal can
  1290. display, a mess will result.  See the @code{T(ext)} modifier in
  1291. @ref{Multi-key file reading commands}, for a way around this.
  1292.  
  1293. As mentioned before, if the user executing the
  1294. command is not an expert, the system will prompt for the file name;
  1295. otherwise, no prompt is given, and the system will wait for the file
  1296. name to be typed on the command line.
  1297.  
  1298. @item .R(ead) [+-XYWVCT] [FB] @var{files.ext}
  1299. @findex .R(ead) [+-XYWVCT] [FB]
  1300. The @code{.R(ead) F(ile)} command, like the message-reading commands,
  1301. has many modifiers to increase your joy in using Fnordadel.  They
  1302. can frequently be strung together to increase your confusion.  Finally,
  1303. as if that wasn't enough, a special variant of the command,
  1304. @code{.R(ead) B(atch file)}, is available for downloading multiple
  1305. files at a time, using Xmodem or Ymodem.
  1306.  
  1307. As mentioned before, if the user executing the
  1308. command is not an expert, the system will prompt for the file name;
  1309. otherwise, no prompt is given, and the system will wait for the file
  1310. name to be typed on the command line.  Now, here are the available
  1311. modifiers:
  1312.  
  1313. @table @code
  1314. @findex +(After) [.R(ead) modifier]
  1315. @findex -(Before) [.R(ead) modifier]
  1316. @item + (After) @var{date}
  1317. @itemx - (Before) @var{date}
  1318. The above two modifiers work just like they do with
  1319. directories and message display.  @xref{Multi-key message reading commands},
  1320. for details on how to do it.
  1321.  
  1322. @findex X(modem) [.R(ead) modifier]
  1323. @findex Y(modem) [.R(ead) modifier]
  1324. @findex W(xmodem) [.R(ead) modifier]
  1325. @findex V(anilla) [.R(ead) modifier]
  1326. @item X(modem)
  1327. @itemx Y(modem)
  1328. @itemx W(xmodem)
  1329. @itemx V(anilla)
  1330. The above four protocol modifiers work in the same fashion as they do in
  1331. other instances, with the addition that if Xmodem or Ymodem is chosen, the
  1332. user may also do a batch file transfer.  @xref{File Transfers}, for details.
  1333.  
  1334. @item C(apture)
  1335. @findex C(apture) [.R(ead) modifier]
  1336. This modifier works like the @code{C(apture)} modifier
  1337. for message-reading commands.  It allows the contents of one or more text
  1338. files in a directory room to be sent to a user's held
  1339. buffer, there to be mangled at his/her whim.  Note that the
  1340. system can't tell a text file from a binary or compressed file,
  1341. so be careful what gets captured.  Also note that only the first
  1342. 10000 characters of the file(s) will be captured; this is the maximum
  1343. Fnordadel message size.
  1344.  
  1345. @item T(ext)
  1346. @findex T(ext) [.R(ead) modifier]
  1347. This modifier allows users to view the contents of
  1348. text files with the normal Fnordadel formatting tricks done
  1349. to them.  If a text file is properly formatted, the results
  1350. will be lovely to behold.  If it isn't, however, the results
  1351. will be heinous.  The typical problem encountered is with
  1352. paragraphs not being indented on the first line; Fnordadel
  1353. will run them into the previous paragraph just as it will with
  1354. messages typed on the system.
  1355.  
  1356. @item Batch downloads
  1357. This is a fun feature for file-mongers to use, as it
  1358. allows them to download multiple files via one single solitary
  1359. @code{.R(ead)} command.  The command must be used after the @code{X(modem)}
  1360. or @code{Y(modem)} modifiers, or the user will get something that says
  1361. @code{B(inary file)} and doesn't do anything useful.
  1362.  
  1363. Standard Ymodem batch protocol is supported.  The user
  1364. may supply several different file names after the command, any
  1365. of which may contain standard wild-cards @samp{*} and @samp{?}.
  1366.  
  1367. Alternatively, if the user has compiled a list of
  1368. files to batch-transfer, using the file browser (@pxref{The File Browser}),
  1369. he/she can just hit @samp{<CR>} instead of
  1370. entering any file names.  The entire batch list will then be
  1371. transferred.
  1372. @end table
  1373.  
  1374. @item .R(ead) H(eader) @var{foo.arc}
  1375. @findex .R(ead) H(eader)
  1376. This command, which can be used only in a directory room, will
  1377. display the header information for any @code{.arc} file in the room.
  1378. Callers may use this to get an idea of the contents of an @code{.arc} file
  1379. before downloading it.  The @code{.arc} format is the only one supported by
  1380. Fnordadel ``out of the box''.  However, the Sysop can define special
  1381. door programs that will enable users to execute this command for
  1382. additional formats, such as @code{.zoo} and @code{.lzh}.
  1383. @xref{Archiver doors},
  1384. for more information on doing this.  Also consult @file{ctdlcnfg.doc}.
  1385.  
  1386. As mentioned before, if the user executing the
  1387. command is not an expert, the system will prompt for the file name;
  1388. otherwise, no prompt is given, and the system will wait for the file
  1389. name to be typed on the command line.
  1390. @end table
  1391. @comment Now done Reading files
  1392.  
  1393. @node Other multi-key read commands,  , Multi-key file reading commands, Multi-key read commands
  1394. @subsubsection Reading other information
  1395.  
  1396. @ftable @code
  1397. @item .R(ead) ?
  1398. This command, predictably, will cause the system to display a
  1399. brief help file about the @code{.R(ead)} command.  Naturally, the Sysop will
  1400. have configured the help files properly so as to make this possible.
  1401.  
  1402. @item .R(ead) I(nvited)
  1403. This command, usable only in hidden or invitation-only rooms,
  1404. will show the user executing it a list of all users with access to the
  1405. room.  The command may be inverted using the @samp{~} modifier, in which
  1406. case the list will contain all users lacking access to the room.
  1407. @xref{Multi-key message reading commands}, for details on @samp{~}.
  1408.  
  1409. @item .R(ead) S(tatus)
  1410. This command will display for the user some mostly meaningless
  1411. and occasionally esoteric status information about the system.  Try it
  1412. and you'll see what we mean.  We also added some useful data
  1413. about various privileges possessed and the values of various user call
  1414. limits.
  1415. @end ftable
  1416. @comment Now done Reading other information
  1417.  
  1418. @node Multi-key navigation commands, Other multi-key commands, Multi-key read commands, Multi-key User Commands
  1419. @subsection Navigation commands
  1420. @cindex Commands, navigation, multi-key
  1421. @cindex Navigation commands, multi-key
  1422. @cindex Multi-key navigation commands
  1423.  
  1424. After reading the perhaps bewildering set of possibilities available with
  1425. @code{.E(nter)} and @code{.R(ead)}, you should be pleased to find that room
  1426. navigation is a more straightforward affair.  However, true to form, the
  1427. multi-key navigation commands offer a few things not available with their
  1428. single-key counter-parts.
  1429.  
  1430. @table @code
  1431. @item .B(ackup) @var{roomname}
  1432. @findex .B(ackup)
  1433. This command provides a way to leave the current room (without
  1434. updating any of its messages as ``old'') and return to a previously-visited
  1435. room.  Any messages in the second room, if ``new'' at the time of login and
  1436. now marked as ``old'', are unmarked, and may again be read using @code{[N]ew}.
  1437.  
  1438. @code{.B(ackup)} is the multi-key sibling of the @code{[B]ackup} command
  1439. (@pxref{Navigation}), and is functionally identical to the @code{.U(ngoto)}
  1440. command (see below).  @code{.U(ngoto)} may not be available on any given
  1441. Fnordadel, so be aware that @code{.B(ackup)} is always there.
  1442.  
  1443. @item .G(oto) ?
  1444. @findex .G(oto) ?
  1445. This is identical to the single-key command @code{[K]nown-rooms}.
  1446. @xref{Navigation}.
  1447.  
  1448. @item .G(oto) @var{roomname}
  1449. @findex .G(oto)
  1450. This command allows the user to leave the current room (at
  1451. which time Fnordadel will mark all messages in the room as ``old'', i.e. as having
  1452. been read), and proceed to another room.  The difference between this
  1453. command and the single-key @code{[G]oto} command is that here the user gives
  1454. a room name explicitly, and the system will go there whether it has
  1455. new messages in it or not.  @code{[G]oto} only goes to rooms containing new
  1456. messages.
  1457.  
  1458. In order to be more useful, the @code{.G(oto)} command allows sub-strings
  1459. of room names to be used.  Thus, the @var{roomname} value can be
  1460. just a few sequential characters from anywhere in a room's name, and
  1461. Fnordadel will find it and go there.  If two or more rooms match
  1462. the sub-string, the system will go to the first one as appearing in the
  1463. known rooms list.
  1464.  
  1465. @item .K(nown) ?
  1466. @findex .K(nown) ?
  1467. This command will display a short list of the available
  1468. @code{.K(nown)} options.
  1469.  
  1470. @item .K(nown) [DHNP] <CR>
  1471. @findex .K(nown) [DHNP] <CR>
  1472. The basic command @code{.K(nown) <CR>} command is like the single-key
  1473. @code{[K]nown} command, and displays a list of rooms accessible by
  1474. the current user.  This command differs from the single-key version in
  1475. that the list may contain rooms from any floor, whether the user is
  1476. operating in floor mode or not.  Also, the list will not be separated
  1477. into groups of rooms based on presence or absence of new messages in
  1478. The rooms.  See also @ref{Navigation}, (@code{[K]nown-rooms});
  1479. @ref{Other multi-key commands}, (@code{.Z(list forgotten)});
  1480. and @ref{Multi-key User Floor Commands}, (@code{;K(nown floors)}).
  1481.  
  1482. The command can be further augmented by several options:
  1483. @code{D(irectory rooms)}, @code{H(idden rooms)}, @code{N(etwork rooms)} and
  1484. @code{P(ublic rooms)}.
  1485. The options can be mixed and matched in any order, and will restrict
  1486. the types of rooms shown by @code{.K(nown)} to those matching @emph{all} the options.
  1487. That is, for a room to be shown, it must match each attribute entered
  1488. by the user.  So @samp{.KD<CR>} will show all directory rooms, while @samp{.KDH<CR>}
  1489. will show all directory rooms that are also hidden.
  1490.  
  1491. @item .K(nown) [DHNP] R(ooms) @var{roomname}
  1492. @findex .K(nown) [DHNP] R(ooms)
  1493. This command will display for the user a list of known rooms
  1494. matching the @var{roomname} value entered.  Fnordadel searches for all
  1495. room names containing the sequence of characters in the entered string
  1496. and lists them.  The room type options @code{[DHNP]} described in the
  1497. previous section are available, and work the same way.
  1498.  
  1499. @item .S(kip) ?
  1500. @findex .S(kip) ?
  1501. This command will display a short help screen concerning the
  1502. use of the @code{.S(kip)} command.  (Assuming the help files are in order,
  1503. of course.)
  1504.  
  1505. @item .S(kip) @var{roomname}
  1506. @findex .S(kip)
  1507. This command is to the single-key @code{[S]kip} command as @code{.G(oto)}
  1508. is to the single-key @code{[G]oto} command.  It allows the user to leave the
  1509. current room and proceed to another one as specified by the @var{roomname}
  1510. value.  @var{roomname} may be just a few characters of the room's full
  1511. name, and Fnordadel will properly find it and go there.  As with
  1512. @code{.G(oto)}, if more than one room's name matches the entered value, the
  1513. system will go to the first one as appearing in the known rooms list.
  1514.  
  1515. The difference between @code{.S(kip)} and @code{.G(oto)} is the same as that
  1516. between @code{[S]kip} and @code{[G]oto}.  Namely, @code{.S(kip)} does not mark any messages
  1517. in the current room as having been read by the user.  The user may
  1518. return to the room later the same session, or on the next call, and
  1519. find the same new messages awaiting.  @xref{Navigation}, on @code{[S]kip}.
  1520.  
  1521. @item .U(ngoto) @var{roomname}
  1522. @findex .U(ngoto)
  1523. This command is identical in function to @code{.B(ackup)}, and the
  1524. multi-key counter-part of @code{[B]ackup}/@code{[U]ngoto}.  The command provides a
  1525. way to leave the current room (without updating any of its messages as
  1526. ``old'') and return to a previously-visited room.  Any messages in the
  1527. second room, if ``new'' at login time and subsequently marked as ``old'',
  1528. are unmarked, and may again be read using @code{[N]ew}.
  1529.  
  1530. @pindex +backup (citadel)
  1531. This command will be unavailable if @code{citadel} is started
  1532. with the @samp{+backup} command-line option.  In such a case, the @code{.U(pload)}
  1533. command is active, and @code{.B(ackup)} must be used by people who wish to
  1534. do this sort of ungotoing.
  1535. @end table
  1536. @comment Now done Navigating between rooms
  1537.  
  1538. @node Other multi-key commands,  , Multi-key navigation commands, Multi-key User Commands
  1539. @subsection Other multi-key commands
  1540.  
  1541. Finally, there are a few additional miscellaneous multi-key commands that
  1542. will prove useful from time to time.
  1543.  
  1544. @ftable @code
  1545. @item .H(elp) ?
  1546. Assuming the system help files are set up properly, this
  1547. command will take the user to the main help menu, and present the list
  1548. of topics about which help is available.
  1549.  
  1550. @item .H(elp) @var{topic}
  1551. This command short-cuts the above main help menu, and goes
  1552. directly to the topic @var{topic} as entered by the user.  The list of
  1553. available topics can be seen by using the command @code{.H(elp) ?}.
  1554.  
  1555. @item .T(erminate) ?
  1556. This command will show the user a list of available options
  1557. with the @code{.T(erminate)} command.  These options allow the user more
  1558. flexibility in how the system treats his/her exit, than does the
  1559. single-key @code{[T]erminate} command.
  1560.  
  1561. @item .T(erminate) S(tay)
  1562. This command allows the current user to log off the system,
  1563. updating all necessary records concerning what rooms were visited,
  1564. what messages were read, and so on.  The only difference from the
  1565. normal @code{[T]erminate} command is that Fnordadel will not cause the modem
  1566. to hang up on the user.  This allows him/her, or another person sitting
  1567. there, to then sign on with another account, without having to dial
  1568. the system back and possibly get beat to the punch by the hundreds of
  1569. other loyal users trying to call.
  1570.  
  1571. @item .T(erminate) Q(uit-also)
  1572. This command behaves the same as @code{[T]erminate}.  Why anybody
  1573. would want to use it is beyond us.
  1574.  
  1575. @item .T(erminate) P(unt)
  1576. This command is another useful one.  After executing it, the
  1577. system will log the user off and hang up the modem as usual.  However,
  1578. the system does not update any room-related records, such as what
  1579. rooms were visited or forgotten, or what messages were read.  In other
  1580. words, it's
  1581. just like the user never called.  This is good if a user has an
  1582. interruption force a termination before everything was read or written,
  1583. and wants to call again later and see everything the way it was for the
  1584. current call.
  1585.  
  1586. Configuration changes made using @samp{.EC} or @samp{.EO} are not lost,
  1587. and the receipt flags on messages in @code{Mail>} are also permanently
  1588. updated (i.e., authors or mail to you will be able to tell you read their
  1589. messages even though you left using @code{P(unt)}).
  1590.  
  1591. @item .T(erminate) Y(es)
  1592. This command, like @code{.T(erminate) Q(uit-also)}, is just the
  1593. same as @code{[T]erminate}.  One day we really must eliminate some of this
  1594. repetitive redundancy.
  1595.  
  1596. @item .U(pload) @var{file.ext}
  1597. This command is the extended counter-part to the single-key
  1598. command @code{[U]pload}.  It behaves identically.  @xref{Other room prompt
  1599. commands}.  This
  1600. @pindex +backup (citadel)
  1601. command is only available if @code{citadel} is started
  1602. with the @samp{+backup} command-line option.  Otherwise, the @code{.U(ngoto)}
  1603. command is active.
  1604.  
  1605. As usual, if the user executing the
  1606. command is not an expert, the system will prompt for a file name;
  1607. otherwise, no prompt is given, and the system will wait for the file
  1608. name to be typed on the command line.
  1609.  
  1610. @item .Z (list forgotten)
  1611. This command fills the gap left by @code{[K]nown}, @code{.K(nown)} and
  1612. @code{;K(nown)}, by giving the user a list of rooms that he/she used
  1613. @code{[Z](forget)} to forget about.  This allows the user to regain access
  1614. to those rooms, by using @code{.G(oto)} and the full room name, to return to
  1615. a room.  Once done, the room will be unforgotten.
  1616.  
  1617. One thing that this command won't do is list forgotten hidden
  1618. or invitation-only rooms.  If the user forgets a hidden room, he/she
  1619. can still get back to it by using @code{.G(oto)} with the room's full name,
  1620. but that name will have to be remembered or obtained without any help
  1621. from Fnordadel.  Invitation-only rooms can't be entered again unless
  1622. the user is reinvited.
  1623. @end ftable
  1624. @comment Now done Other commands
  1625.  
  1626. @node Multi-key User Floor Commands, The Message Editor, Multi-key User Commands, User Command Reference
  1627. @section Multi-key User Floor Commands
  1628. @cindex Floor commands, multi-key
  1629. @cindex Commands, floor, multi-key
  1630.  
  1631. In addition to the extended commands described above, there are some
  1632. multi-key commands that apply specifically to floors.  These are signified
  1633. by starting the command with the @samp{;} character to indicate that a
  1634. floor command is about to happen.  As with @samp{.?}, @samp{;?} will show a
  1635. list of available extended floor commands.  It should look like this:
  1636.  
  1637. @cindex Floor commands menu
  1638. @example
  1639. ;C(onfigure floor mode)
  1640. ;G(oto) @var{floorname}
  1641. ;K(nown floors list)
  1642. ;R(ead) floor w/ all .R(ead) options
  1643. ;S(kip all rooms on this floor)
  1644. ;Z (forget this floor)
  1645. ;> (move to next floor)
  1646. ;< (move to previous floor)
  1647. @end example
  1648.  
  1649. @ftable @code
  1650. @item ;C(onfigure floor mode)
  1651. This is a quickie way to switch from floor mode to normal
  1652. mode (or vice versa).  The current state of floor mode will be saved
  1653. for subsequent logins.  This can also be done in the @samp{.EC} menu
  1654. or with the @samp{.EO} command---see @ref{Other multi-key entry commands},
  1655. and @ref{User Configuration}.
  1656.  
  1657. @item ;G(oto) @var{floorname}
  1658. This command takes a full or partial name of a floor, and
  1659. takes the user to the first room in said floor, if found and accessible
  1660. by the user.  Any new messages
  1661. in the room being left via @code{;G(oto)} are marked as old, as per usual.
  1662.  
  1663. @item ;K(nown floors list)
  1664. This is the most commonly used floor command.  It prints a
  1665. nice formatted list of all floors in the system, and which rooms are
  1666. on which floor.  The list is printed in two parts: first, the floors
  1667. containing rooms with unread messages, and second, those floors without
  1668. such rooms.  A floor will be listed as having rooms with unread
  1669. messages no matter how many such rooms are on the floor; there may be
  1670. only one.
  1671.  
  1672. If none of the rooms on a floor are accessible to a user,
  1673. he/she will not be shown any information about the floor.
  1674.  
  1675. @item ;R(ead floor)
  1676. This command is like @code{.R(ead)}, but traverses all rooms on the
  1677. current floor looking for messages.  All @code{.R(ead)} options are usable,
  1678. although @code{G(lobal)} in particular wouldn't make sense since it goes after
  1679. all rooms on the system.  If the user isn't in floor mode, this
  1680. command will have exactly the same effect as @code{.R(ead)}.
  1681.  
  1682. @item ;S(kip this floor)
  1683. This command causes @emph{all} rooms on the current floor with unread
  1684. messages to be marked as skipped.  The user is taken to the next
  1685. floor containing unread messages.
  1686.  
  1687. @item ;Z (forget this floor)
  1688. This is a fairly dangerous command, in that it causes all
  1689. rooms on the current floor to be forgotten (a la the @code{[Z]forget} command).
  1690. The user is taken to the base floor after executing this command.
  1691. @xref{Other room prompt commands}.
  1692.  
  1693. @item ;> (move to next floor)
  1694. @itemx ;< (move to previous floor)
  1695. The @code{;> (next)} and @code{;< (previous)} commands are identical to the
  1696. single key @code{[>]next} and @code{[<]previous} commands.  @xref{Navigation}.
  1697. @end ftable
  1698.  
  1699. @node The Message Editor, User Configuration, Multi-key User Floor Commands, User Command Reference
  1700. @section The Message Editor
  1701. @cindex Editing messages
  1702. @cindex Message editor
  1703.  
  1704. As mentioned earlier, the Fnordadel message editor is rather unlike
  1705. the editors on most other systems.
  1706. The big difference is that a message, to Fnordadel, is
  1707. just a long string of characters up to 10000 in number.  In most
  1708. other systems, a message is a series of lines, each of which is a
  1709. string of characters that usually can't exceed 80 (or so) in number.
  1710. Message editing on such systems can be cumbersome, since every
  1711. command works on the message lines.  Sadly, the editor's concept of
  1712. lines rarely meshes with the user's concept of sentences and
  1713. paragraphs.  This causes trouble when text needs to be deleted or
  1714. added to the message.
  1715.  
  1716. In Fnordadel, there are no message ``lines'', just straight
  1717. text.  The only thing that Fnordadel recognizes is the
  1718. concept of a paragraph.  Paragraphs are separated by a carriage-return in
  1719. the text, followed by at least one space.  This is a crucial fact
  1720. that causes people a lot of confusion, so it will be emphasized:
  1721. @quotation
  1722. If a @samp{<CR>} is typed and @emph{not} followed by at least one space,
  1723. Fnordadel will throw the @samp{<CR>} away, and replace it with a simple
  1724. space character.  This permits the system to format things nicely for users
  1725. with a different screen width than the author, no matter how many spurious
  1726. @samp{<CR>} characters the author may enter.  Line-based editors usually do
  1727. not work this way.
  1728. @end quotation
  1729. While entering the text of a message, Fnordadel doesn't
  1730. worry about making it look pretty by doing word-wrap, i.e.
  1731. preventing whole words from being broken on the right-hand margin of
  1732. the user's screen while he/she types.  Fnordadel performs no
  1733. pretty formatting on
  1734. the message until it is actually displayed, at which time it will
  1735. oblige the user reading it by formatting everything neatly out
  1736. according to the configured screen width.
  1737.  
  1738. At various times during the course of entering a message,
  1739. it is likely that a user will want to do things such as display
  1740. the text entered so far, perform some edits, or save the message.
  1741. To get out of message entry mode, the user must enter two @samp{<CR>s}
  1742. in a row.  He or she will then be sitting
  1743. at the main message editor prompt, which also shows the current room
  1744. name (for those forgetful types).  Pressing @samp{?} will generate this list:
  1745.  
  1746. @cindex Editor menu
  1747. @cindex Message editor menu
  1748. @example
  1749. Editing:
  1750. [B]lock replace text
  1751. [D]elete text
  1752. [I]nsert paragraph break
  1753. [K]ill text block
  1754. [R]eplace text
  1755.  
  1756. Control:
  1757. [A]bort entry
  1758. [C]ontinue
  1759. [H]old Message for later
  1760. [L]ocal save
  1761. [N]etwork save (shared rooms/mail)
  1762. An[O]nymous message toggle
  1763. [P]rint formatted
  1764. [S]ave message
  1765. @end example
  1766.  
  1767. @table @code
  1768. @item [B]lock replace text
  1769. This command allows the user to replace a large
  1770. chunk of text with something else.  When it is invoked,
  1771. Fnordadel will prompt for the starting and ending strings
  1772. of text which ``frame'' (and are included in) the block of
  1773. text to be replaced.
  1774.  
  1775. If the two strings do not match a block of text
  1776. somewhere in the message, Fnordadel will say as much and
  1777. return to the editor prompt.  Otherwise, the system will
  1778. prompt for the replacement text, which is limited to about
  1779. 200 characters in size.  The user may just hit a carriage-return
  1780. here to cause the block of text to be replaced with
  1781. nothing (i.e. deleted).
  1782.  
  1783. When the replacement text is entered, Fnordadel
  1784. will then echo back to the screen the entire block of text
  1785. it found as a match for the starting and ending search text.
  1786. The system will display a little bit of additional text
  1787. before and after the matching block to give an idea of the
  1788. context surrounding the block, so the user can make sure
  1789. the right stuff is going to be replaced.  Following will
  1790. appear a prompt:
  1791.  
  1792. @example
  1793. Replace this one? (Y/N/[A]ll/[Q]uit):
  1794. @end example
  1795.  
  1796. At this point, the user may enter @samp{Y} to cause the replacement,
  1797. or @samp{N} to cancel it.  In either case, the
  1798. system will search for another match to the starting
  1799. and ending text.  If found, the prompt will appear again.
  1800.  
  1801. If the @code{[A]ll} option is chosen at some point, the
  1802. system will then automatically search out and replace all
  1803. remaining instances of the starting and ending text,
  1804. starting with the block currently displayed.  The process is
  1805. unstoppable, so be sure it's what is desired.
  1806.  
  1807. The @code{[Q]uit} option will cancel the current replacement
  1808. being asked about, and stop the system from looking for
  1809. any remaining candidates.  Once the searching stops, by
  1810. @code{[Q]uit} or because there are no more matches, the system
  1811. will report how many matches were found and how many were
  1812. actually replaced.
  1813.  
  1814. One thing to note about all of the Fnordadel
  1815. delete/replace commands is that they search for text in
  1816. reverse, from the end of the message towards the start.
  1817. This is done because, in general, users want to change the
  1818. text they typed recently more often than the text they
  1819. typed awhile ago.
  1820.  
  1821. @item [D]elete text
  1822. This command permits the user to specify a single
  1823. (usually short) text string to be deleted from the message.
  1824. If the string is found, it will be echoed back for
  1825. confirmation, with some surrounding text for context.  As
  1826. with @code{[B]lock replace}, a prompt will appear allowing @code{[A]ll}
  1827. instances to be deleted, or the process to be @code{[Q]uit}.
  1828.  
  1829. @item [I]nsert paragraph break
  1830. So you've written a 10K message and just realized
  1831. that you didn't put a single paragraph break in it?  Bad
  1832. form, you're sure to lose face.  You can correct the faux pas
  1833. using this
  1834. command.  Simply invoke it and supply a short text string
  1835. that uniquely identifies the place in your message where
  1836. you want a paragraph break.  Fnordadel will find the
  1837. string, and insert a break just before it.  That's @emph{before},
  1838. not after.
  1839.  
  1840. Note that the system does not, at the moment,
  1841. prompt the user when it has found a match for the search
  1842. string.  Be careful not to insert breaks in spurious
  1843. loca
  1844.  
  1845. tions.
  1846.  
  1847. @item [K]ill text block
  1848. This command is the deletion equivalent of
  1849. @code{[B]lock replace}, and works in a similar fashion.  The sole change is
  1850. that @code{[K]ill} doesn't ask for replacement text, since there
  1851. isn't going to be any replacement except hard vacuum.
  1852.  
  1853. @item [R]eplace text
  1854. This command is the replacement equivalent of the
  1855. @code{[D]elete} text command above.  It functions in the same manner
  1856. as @code{[B]lock replace}, but requests only a single (usually
  1857. short) text string to search for.
  1858.  
  1859. @item [A]bort entry
  1860. This command permits the user to throw the message
  1861. away if he or she has second thoughts about it.  The system
  1862. will prompt for confirmation before tossing the message.  Ain't
  1863. that considerate?
  1864.  
  1865. @item [C]ontinue
  1866. This command allows the user to resume message entry
  1867. where it was left off.  The two carriage-returns entered to
  1868. escape from message entry mode before are not kept around,
  1869. so message entry will continue immediately after the last
  1870. character typed before the two @samp{<CR>}s.  The last few words of
  1871. the text so far are redisplayed so the user can recapture
  1872. his or her train of thought.
  1873.  
  1874. @item [H]old message for later
  1875. This command is very handy when used properly.
  1876. [H]olding the message
  1877. will store it in a temporary buffer where it can be retrieved
  1878. later using the @code{.E(nter) H(eld-message)} command (@pxref{Multi-key
  1879. message entry commands}), or using @code{[H]eld message} from `more' mode
  1880. (@pxref{More Mode}).
  1881.  
  1882. Meanwhile, however, after pressing @samp{H}, the user is
  1883. returned to the room prompt and can go about normal activities
  1884. like reading other messages and moving to other rooms.  The
  1885. held message does not have to be continued in the room in
  1886. which it was originally started; it can be resurrected and
  1887. saved into any other room, even @code{Mail>}.
  1888.  
  1889. This command is particularly useful for replying to
  1890. several different messages within a single message.  The user
  1891. may enter a reply to one message, @code{[H]old} the reply, and
  1892. continue reading additional messages and tacking replies
  1893. onto his/her own existing message.  This is usually considered to
  1894. be good form, especially if posting a series of replies in a
  1895. networked room.  One message is easier to transmit than many,
  1896. and also will take up fewer valuable slots on other variants of Citadel
  1897. that can only store a fixed number of messages in each room.
  1898.  
  1899. Each held message is squirreled away in a disk file,
  1900. from where it is retrieved when the user continues it.  A
  1901. @file{ctdlcnfg.sys} parameter called
  1902. @vindex keephold
  1903. @code{#keephold} lets the Sysop
  1904. choose to have Fnordadel throw away each hold file when the
  1905. user who saved it logs out, or to keep the hold file until
  1906. the user continues his/her message.  This could be any time in
  1907. the future (unless the user's account scrolls off the system
  1908. before he/she continues the message), so the hold files might
  1909. take up quite a bit of space.  If this happens, the Sysop can
  1910. delete them manually from @sc{gem} or a command shell.
  1911.  
  1912. @item [L]ocal save
  1913. This command allows a user to force Fnordadel to
  1914. save a message as a non-networked message, in a room that
  1915. might otherwise automatically send the message out over the
  1916. network.  It is typically used when entering a reply to
  1917. something that should be kept local due to being of purely
  1918. local interest, or just plain snarky in tone.  Other
  1919. Sysops on the network usually won't like to see either type
  1920. of message coming from your system.
  1921.  
  1922. This command works in the @code{Mail>} room, as well.  If
  1923. a message has been entered to a user residing at another
  1924. system on the network, hitting @samp{L} allows redirecting the
  1925. message to a user on the local system instead.
  1926.  
  1927. @item [N]etwork save
  1928. This command has the opposite effect of @code{[L]ocal save},
  1929. above.  One additional restriction, however, is that not all
  1930. users may have the necessary status to make a message go
  1931. out over the network.  This depends on the
  1932. @vindex allnet
  1933. @code{#allnet} parameter
  1934. in @file{ctdlcnfg.sys}.  If
  1935. @vindex allnet
  1936. @code{#allnet} is not set, the Sysop must grant
  1937. network privileges to users on an individual basis.
  1938. See @code{.E(nter) N(et-message)} in
  1939. @ref{Multi-key message entry commands},
  1940. @vindex allnet
  1941. @code{#allnet} in @ref{Optional parameters, , Optional networking parameters},
  1942. and @ref{User Status Commands}.
  1943.  
  1944. As with @code{[L]ocal save}, @code{[N]etwork save} works in @code{Mail>}.
  1945. If users wish to send mail to long-distance systems, they will
  1946. @cindex Network credits
  1947. need @dfn{long-distance network credits} in addition to network privileges.
  1948.  
  1949. @item An[O]nymous message toggle
  1950. In rooms which are anonymous, author names and the dates/times of entry are
  1951. normally not stored or shown with messages.  If a user wishes to
  1952. unquestionably identify a message as his or her own, however, this command
  1953. will override the normal anonymity of the room and put a standard header on
  1954. the message.  @xref{Rooms}, and the @code{.A(ide) E(dit)} command in
  1955. @ref{The .A(ide) command}, for more on anonymous rooms.
  1956.  
  1957. @item [P]rint formatted
  1958. This command will display the message text entered
  1959. so far, nicely formatted to the user's configured screen
  1960. width.  Message display can be manipulated using @code{[P]ause},
  1961. @code{[J]ump}, etc., as usual.
  1962.  
  1963. @item [S]ave message
  1964. Here's where all the hard work pays off!  @code{[S]ave} the
  1965. message and then sit back and wait for all the plaudits and
  1966. applause to come pouring in.  Just don't forget to duck the
  1967. tomatoes and rotten eggs from the unenlightened.
  1968. @end table
  1969.  
  1970. @node User Configuration, More Mode, The Message Editor, User Command Reference
  1971. @section User Configuration
  1972. @cindex User configuration
  1973. @cindex Configuration, user
  1974. @cindex Options, user
  1975.  
  1976. There is an ever-increasing list of personal configuration options that
  1977. a Fnordadel user can set.  Some of them (all of them, if a user claims
  1978. Citadel expertise) are set when each user first logs into the system.  If
  1979. they ever need changing, there exist the @code{.E(nter) C(onfiguration)}
  1980. and @code{.E(nter) O(ption)} commands.  @samp{.EC} is a menu-driven; each
  1981. option in its menu can also be set directly by @samp{.EO}.
  1982. @xref{Other multi-key entry commands}.
  1983. The list of options is as follows:
  1984. @cindex User configuration menu
  1985. @example
  1986. [A]uto new
  1987. [E]xpert mode
  1988. [F]loor mode
  1989. [L]inefeeds switch
  1990. [N]ulls
  1991. [O]- show last old message on [N]ew
  1992. [P]ause between messages
  1993. [R]unning count of msgs while reading
  1994. [T]- show time of message creation
  1995. [V]iew configuration
  1996. [W]idth of screen
  1997. e[X]it
  1998. [Y]- set default transfer protocol
  1999. @end example
  2000.  
  2001. @table @code
  2002. @item [A]uto new
  2003. This flag tells the system whether it should automatically show the
  2004. user all new @code{Lobby>} messages after he or she logs in.  Most Citadels
  2005. do this whether you like it or not.  We didn't like it, so we took
  2006. it out.  After much protest, we put it back in as a configurable thing.
  2007. The default the first time this question is posed (when a new user first
  2008. logs in) is set by the @file{ctdlcnfg.sys} parameter
  2009. @vindex defautonew
  2010. @code{#defautonew}.
  2011.  
  2012. @item [E]xpert mode
  2013. This parameter allows a user to control Fnordadel's
  2014. behavior in some ways.  In general, an experienced user is
  2015. shown far less verbose information in terms of command prompts
  2016. and automatic help messages.  The default the first time this
  2017. question is asked (during login) is ``no''.
  2018.  
  2019. @item [F]loor mode
  2020. This option allows the user to control whether he/she will use the system in
  2021. floor mode.  If ``no'', the system will appear to be one big unorganized
  2022. collection of rooms.  If ``yes'', rooms will be grouped by their defined
  2023. floors, if there are any.  The default here is ``yes''.  @xref{Floors}, for a
  2024. description of floors, and @ref{Multi-key User Floor Commands}, for commands
  2025. to use them.  The default the first time this question is asked
  2026. (during login) is set by the @file{ctdlcnfg.sys} parameter
  2027. @vindex deffloormode
  2028. @code{#deffloormode}.
  2029.  
  2030. @item [L]inefeeds switch
  2031. This parameters allows a user to tell Fnordadel
  2032. whether each line output by the system should be ended with just a carriage-return
  2033. (@samp{<CR>}) character, or both a @samp{<CR>} and a line-feed (@samp{<LF>}).  On some
  2034. terminals (mostly ancient ones), a @samp{<CR>} character only causes
  2035. the cursor to return to the left margin, not to advance a line
  2036. as well.  Thus the @samp{<LF>} characters might be needed.  The default
  2037. here the first time through (during login) is ``yes'', to output both
  2038. @samp{<CR>} and @samp{<LF>}.
  2039.  
  2040. @item [N]ulls
  2041. This is the number of non-displaying @sc{ascii} ``null'' characters
  2042. that Fnordadel will output at the end of each line on the
  2043. screen.  This capability, which is mostly not understood by
  2044. users these days, allows them to cause Fnordadel to slow
  2045. output down for them.  (Nulls are non-displaying characters,
  2046. but they still take time to send over the modem.)  Users with fast modems (2400 bps and
  2047. higher) can use this feature to help them read what's being
  2048. sent without having to hit the @code{[P]ause} key until it breaks.
  2049. The initial default value (during login) is 0 nulls.
  2050.  
  2051. @item [O]- show last old message on [N]ew
  2052. This option allows the user to specify whether
  2053. Fnordadel should show the last old (i.e. previously
  2054. read) message in a room, if there is one, each time
  2055. the @code{[N]ew} command is used.  Users with memory problems might
  2056. want to answer ``yes'', and use the last old message to remind
  2057. them of the discussion.  The first-time default answer
  2058. here (during login) is controlled by the @file{ctdlcnfg.sys} parameter
  2059. @vindex deflastold
  2060. @code{#deflastold}.
  2061.  
  2062. @item [P]ause between messages
  2063. This option allows a user to specify the @samp{more}
  2064. prompt to be automatically used by all message-reading
  2065. commands.  @xref{More Mode}, for details about the @samp{more}
  2066. prompt.  Note that @samp{more} mode is never the default for file-reading
  2067. commands.  Also note that the @samp{more} default can be
  2068. overridden using the @samp{~} modifier with @code{.R(ead)}; see
  2069. @ref{Multi-key message reading commands}.
  2070. The default value to this flag when a new user
  2071. signs on is initially
  2072. controlled by the @file{ctdlcnfg.sys} parameter
  2073. @vindex defreadmore
  2074. @code{#defreadmore}.
  2075.  
  2076. @item [R]unning count of msgs while reading
  2077. This parameter allows a user to tell Fnordadel to
  2078. show him/her a running downward count of the number of messages
  2079. remaining to be read, while using any message-reading command.
  2080. The count is shown in the message header as ``(n left)'', where
  2081. ``n'' is the number of messages still to be read.  This option's
  2082. initial default value for new users is set with the @file{ctdlcnfg.sys}
  2083. parameter
  2084. @vindex defnumleft
  2085. @code{#defnumleft}.
  2086.  
  2087. @item [T]- show time of message creation
  2088. This option allows the user to control whether
  2089. Fnordadel will display message creation times in
  2090. message headers, or just creation dates.  The default
  2091. here when new users login is set by the @file{ctdlcnfg.sys}
  2092. @vindex defshowtime
  2093. @code{#defshowtime} parameter.
  2094.  
  2095. @item [V]iew configuration
  2096. This command does the obvious, and displays the user's
  2097. current configuration settings.
  2098.  
  2099. @item [W]idth of screen
  2100. This is the user's terminal's line width in characters.
  2101. Fnordadel imposes a range limit of 10 characters minimum,
  2102. 255 characters maximum.  Most users these days will have an
  2103. 80-character screen width.
  2104.  
  2105. Due to the way Fnordadel formats
  2106. information for display, it's a good idea to set this value to
  2107. 1 less than the actual width.  Thus an 80-column user would
  2108. answer 79.  Doing this prevents the odd spurious blank line
  2109. from showing up.  The default value here is whatever the Sysop
  2110. has defined as the system's screen width (see @code{width} parameter
  2111. in @file{ctdlcnfg.doc}).
  2112.  
  2113. @item e[X]it
  2114. Another obvious command.  This one exits the menu and
  2115. returns the user to the room prompt.  Any changes made in the
  2116. menu are updated into the user's log entry.
  2117.  
  2118. @item [Y]- set default transfer protocol
  2119. This command allows the user to set a default transfer
  2120. protocol.  The choice may be made from:  Xmodem, Ymodem and
  2121. Wxmodem.  Wxmodem may not be available, since we don't believe
  2122. the code works anyway, and have never bothered to fix it.
  2123.  
  2124. The protocol specified here will be used with the
  2125. @code{[D]ownload}, @code{[U]pload} (if the Sysop has made it available) and
  2126. @code{.E(nter) F(ile)} commands.  All are documented in this chapter.
  2127. See also @ref{File Transfers}.
  2128. The default value used for this option when users first login is ``Xmodem''.
  2129. @end table
  2130. @comment Now done User Configuration
  2131.  
  2132. @node More Mode, Deleting Messages, User Configuration, User Command Reference
  2133. @section More Mode
  2134. @cindex More mode
  2135. @cindex Pausing between messages
  2136.  
  2137. As mentioned in @ref{Multi-key read commands}, one of the message-reading
  2138. options available is called @code{M(ore)}.  To recap briefly, with
  2139. @samp{more} mode, the system pauses after each message displayed by any
  2140. of the message-reading commands, to permit the digestion of what was just
  2141. read, and/or the entry of a few other commands, without breaking out of
  2142. the message-reading sequence.
  2143.  
  2144. @code{M(ore)} is used by default by all of the message-reading commands
  2145. when the user is in @code{Mail>}.  There is also a user configuration
  2146. option that will make the system default to @samp{more} mode all the time, in
  2147. all rooms, with both single- and multi-key commands.  @xref{User Configuration}.
  2148.  
  2149. Hitting @samp{?} at the @samp{more cmd:} prompt will display a list of
  2150. available options:
  2151.  
  2152. @cindex More menu
  2153. @example
  2154. [A]- this message again
  2155. [B]ackup to previous message
  2156. [D]elete this message
  2157. [H]- continue held message
  2158. [N]ext message (also <SPACE>, <CR>)
  2159. [R]eply to this message
  2160. e[X]it message reader (also [Q]uit, [S]top)
  2161. @end example
  2162.  
  2163. @table @code
  2164. @item [A]- this message again
  2165. This @code{M(ore)} command will cause the system to
  2166. redisplay the message just read, for further critical
  2167. examination, or for the short of memory.
  2168.  
  2169. @item [B]ackup to previous message
  2170. The command backs up one message, and shows
  2171. what has gone before.  The command does nothing if
  2172. there is no previous message.  Note that if reading
  2173. new messages, one can not back up into those that are
  2174. old.  The reverse is also true.
  2175.  
  2176. @item [D]elete this message
  2177. This command allows users to delete messages.
  2178. @xref{Deleting Messages}, for more.
  2179.  
  2180. @item [H]- continue held message
  2181. This @code{M(ore)} command is quite useful, as it
  2182. permits the user to jump into the held buffer and add
  2183. to a message already in progress.  Once the desired
  2184. additions have been made to the message, it can be held
  2185. again or saved, and the system will resume the message-reading
  2186. cycle where it left off.
  2187.  
  2188. @item [N]ext message (also <SPACE>, <CR>)
  2189. This command, or its equivalents,
  2190. will cause the system to move on to the next message
  2191. in the sequence.  When
  2192. there are no more messages to be read, the user is
  2193. returned to the regular room prompt.  Messages entered
  2194. by the user during reading are not shown, if reading in
  2195. an old-to-new direction.
  2196.  
  2197. @item [R]eply to this message
  2198. This command permits the user to start a new
  2199. message which will be in reply to the message just
  2200. read.  In all rooms except @code{Mail>}, the reply has no
  2201. special significance.  In @code{Mail>}, however, the system
  2202. will automatically address the new message to the
  2203. author of the message to which the user is replying.
  2204. As with all messages, the user can @code{[H]old} it if so
  2205. desired.  Whether it is held or saved, the system will
  2206. return to the message-reading cycle where it left off.
  2207.  
  2208. The system may prevent the reply for a variety
  2209. of reasons:  the would-be recipient of the message is
  2210. no longer in the user log; the message must be netted
  2211. to reach the recipient, and the replier doesn't have
  2212. net privileges or sufficient l-d credits; the message
  2213. must be netted but the system can't recognize the
  2214. destination net node; etc.
  2215.  
  2216. @item e[X]it message reader (also [Q]uit, [S]top)
  2217. This command halts the message-reading cycle
  2218. immediately and returns the user to the room prompt.
  2219. @end table
  2220. @comment End of More options table
  2221.  
  2222. There are a few additional @code{M(ore)} commands
  2223. available to users with Aide, Co-Sysop or Sysop status.  They permit
  2224. moving, copying and journalling messages, and other more
  2225. esoteric things.
  2226. @xref{Aide message deletion and movement}, @ref{Message journalling},
  2227. @ref{Promoting local messages to net messages}, and @ref{Mail receipt flag}.
  2228. Also, use of @code{M(ore)} can be negated when the
  2229. modifier is used in conjunction with the @samp{~} modifier; see
  2230. @ref{Multi-key message reading commands}.
  2231.  
  2232. @node Deleting Messages,  , More Mode, User Command Reference
  2233. @section Deleting Messages
  2234. @cindex Message deletion
  2235. @cindex Deleting messages
  2236.  
  2237. Users who enter messages may find, from time to time, that it is
  2238. necessary to delete one for some reason or other.  Fnordadel permits regular
  2239. users to delete messages, with the following restrictions:
  2240.  
  2241. @itemize @bullet
  2242. @item
  2243. A message must have been authored by the user trying to delete it.
  2244. @item
  2245. A message in a normal room (i.e., not @code{Mail>}) must have been entered
  2246. by the user during his or her current login session, to be deletable.
  2247. Once the user logs out, all messages in normal rooms become locked.
  2248. Only an Aide, Co-Sysop or the Sysop can delete them then.
  2249. @item
  2250. A message in the @code{Mail>} room can be deleted by the author at any
  2251. point, provided that the intended recipient has not read the message
  2252. yet.  Fnordadel keeps track of whether @code{Mail>} messages are read or
  2253. unread by their recipients; once the recipient has seen the message,
  2254. there is no point deleting it.
  2255. @end itemize
  2256.  
  2257. Assuming that the above restrictions permit a user to delete a given
  2258. message, there are two ways to carry out the deletion:
  2259.  
  2260. @enumerate
  2261. @item
  2262. While reading messages normally
  2263. @itemize @minus
  2264. @item
  2265. Use normal message-reading commands (e.g. @code{[N]ew} or @code{[R]everse})
  2266. to display the desired message on screen, and @code{[P]ause} the
  2267. system somewhere in the body of the target message's text.
  2268. @item
  2269. While the system is paused, hit @samp{D} for @code{[D]elete}.
  2270. @item
  2271. The system will resume displaying the message through to its
  2272. end, then display a prompt like this:
  2273.  
  2274. @example
  2275. [D]elete [A]bort?
  2276. @end example
  2277.  
  2278. @item
  2279. To delete the message, hit @samp{D}.  To abort the process, hit @samp{A}.
  2280. @end itemize
  2281.  
  2282. @item
  2283. While reading mesages using @samp{more}
  2284. @itemize @minus
  2285. @item
  2286. Since the above method can be cumbersome, or down-right difficult
  2287. in the case of small messages that scroll by before you
  2288. can pause the system, users may also select the @code{[D]elete}
  2289. command from the @code{.R(ead) M(ore)} prompt.  @xref{More Mode}.
  2290. @item
  2291. The rest proceeds as above.
  2292. @end itemize
  2293. @end enumerate
  2294.